1

現在、特定のアプリからアンドロイドコンタクトブックへの特定のクエリを除外するプロジェクトに取り組んでいます。どのアプリがコンタクトプロバイダにアクセスしているのか、どうすればわかるのでしょうか?私はAPIリファレンスを見てきましたが、データへのアクセスを要求するアプリを取得するのではなく、コンテンツプロバイダのクライアントを取得する方法しかないようです。誰かがこれを少し説明できるなら、それは大きな助けになるでしょう!前もって感謝します!Android:コンテンツリゾルバのクライアントを理解する方法

+0

「ContentResolver」には少なくとも、どのようにこの用語を使用するかという点では「クライアント」はありません。 – CommonsWare

+0

私はアプリがコンテンツリゾルバを呼んでいると言おうとしていました。その名前はありますか? – user7153368

+0

私はそれを 'ContentProvider'のクライアントと呼びます。 – CommonsWare

答えて

1

ContentProviderあなたはこのようにあなたを呼び出すアプリのパッケージ名を取得することができますから:あなたは、パッケージ(s)はあなたが維持ホワイトリスト/ブラックリスト上にあることを確認することができます

@NonNull 
private static Collection<String> getCallingPackages(Context context) { 
    int callingUid = Binder.getCallingUid(); 
    if (callingUid == 0) { 
     return Collections.emptyList(); 
    } 

    String[] packages = context.getPackageManager().getPackagesForUid(callingUid); 

    return new ArrayList<>(Arrays.asList(packages)); 
} 

を。

+0

ありがとうアイデア作品 – user7153368

関連する問題