i am using a contentprovider 
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
 and i use this code to get a list of allowed apps from the Contentprovider host apps Manifest. This is working fine.
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
If i now query data from within another app it also gets the context to the Hostapp.
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
I was expecting to get the packagename from the client app to appear but it always print the packagename from the Host app. But ok, the contentprovider itself is in App A and this is the Context i am getting.
I was hoping that i could get the context from the app using the Contentresolver to query/write to it.
How could i get the correct Context (the app which is using the Content Resolver to query/insert something?
Any help is highly welcome ;-)
			
			
			
				B4X:
			
		
		
		public class dataprovider extends ContentProvider {
	
			
				B4X:
			
		
		
		Context context = getContext();
        ApplicationInfo ai;
        try {
            ai = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
            Object value = (Object)ai.metaData.getString("allowedapps");
            String dummy = (String) value;
            String[] allowedapps = dummy.split(";");
            allowed = allowedapps;
            for (int i = 0; i < allowedapps.length; i++) {
                //BA.Log(allowedapps[i]);
            }
        } catch (NameNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
	If i now query data from within another app it also gets the context to the Hostapp.
			
				B4X:
			
		
		
		   public Cursor query(Uri uri, String[] projection, String selection,
                        String[] selectionArgs, String sortOrder) {
        Context context = getContext();
        String sender = new String (context.getPackageName());
        boolean ok = false;
        for (int i = 0; i < allowed.length; i++) {
          String app = allowed[i];
          if (app.equals(sender)){
              ok = true;
              BA.Log(sender+" is allowed");
          }
      }
        if (ok == false){
            throw new IllegalArgumentException("Unsupported Senderapp: " + uri);
        }
	I was hoping that i could get the context from the app using the Contentresolver to query/write to it.
How could i get the correct Context (the app which is using the Content Resolver to query/insert something?
Any help is highly welcome ;-)
			
				Last edited: