ContentProviderのauthorityの取得方法

  • 8
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

ContentProviderのauthorityの取得方法

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

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

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

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

    /**
     * get 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