頭のメモリが少ない

プログラミングと日々の生活

ContentProviderのauthorityの取得方法

ContentProviderのauthorityの取得方法

ContentProviderを使用する場合に、authorityはmanifestに書いてあるauthorityをコピペで

public static final String AUTHORITY = "com.hogehoge.jp";

定数として定義するのが一般的なやり方だと思います。

AndroidManifest.xmlのauthorityはContextとContentProviderの実装クラスさえ分かれば、コードからでも取ること可能です。

    /**
     * Get ContentProvider authority from AndroidManifest.xml.
     * 
     * @param context context
     * @param providerClass providerClass
     * @return authority
     */
    public static String getAuthority(Context context, Class< ? extends ContentProvider> providerClass){
        PackageManager manager = context.getApplicationContext().getPackageManager();
        try {
            ProviderInfo providerInfo = manager.getProviderInfo(
                    new ComponentName(context, providerClass), PackageManager.GET_META_DATA);
            return providerInfo.authority;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return "";
    }

他にもAndroidManifest.xmlの内容はPackageManagerから色々と取得出来ます。

■参考

http://developer.android.com/reference/android/content/pm/PackageManager.html

※本記事は以前qiitaに投稿したものと同様の内容です

qiita.com