3

На самом деле, я хочу, чтобы какая-либо трансляция, когда какое-либо другое приложение извлекает данные из поставщика контента, совместно используемого моим приложением.Как получить имя пакета приложения, которое получает доступ к поставщику контента моего приложения?

ответ

6

вы можете использовать Binder.getCallingUid(), чтобы получить uid вызывающего приложения. , затем используйте getPackageManager().getNameForUid(uid), чтобы получить имя вызывающего приложения.

Пример:

@Override 
    public Uri insert(Uri uri, ContentValues values) { 
     int code = sUriMatcher.match(uri); 
     String callingPackageName = getContext().getPackageManager().getNameForUid(
       Binder.getCallingUid()); 
     Log.d(TAG, "calling Package Name::" + callingPackageName); 

     if (callingPackageName.equals(PKG_MY_PACKAGE)) { 
      //do what you want 
     } 
     . 
     . 
     . 
     return uri; 
    } 
3

Может быть, я довольно поздно, но в API19 и выше, вы можете просто позвонить

getCallingPackage(); 

внутри ContentProvider, чтобы сделать этот трюк.

Посмотрите на Android Reference для более подробной информации.

Смежные вопросы