您的位置:首页 > 编程语言 > PHP开发

利用meta-data的数据,动态更改contetnprovider的authorities

2016-12-15 23:02 1571 查看
 因为业务需要,做个库给应用使用,需要动态的给contentprovider配置uri,于是便用到了meta和${applicationId},很方便的解决了问题,并且极大的方便了其他应用的使用。

1.在AndroidManifest里面配置meta

<meta-data
android:name="BFC_UPLOAD_HOST_APP_ID"
android:value="${applicationId}" />

  ${applicationId}的作用就是用applicationId替代meta-data 的value的值
2.contentprovider配置
<provider
android:name="com.eebbk.bfc.uploadsdk.upload.provider.UploadProvider"
android:authorities="${applicationId}.bbkupload"
android:exported="true">
</provider>
3.获取meta-data的值
    public static String getHostAppId(Context appContext) throws IllegalArgumentException {
ApplicationInfo applicationInfo = null;
try {
applicationInfo = appContext.getPackageManager().getApplicationInfo(appContext.getPackageName(), PackageManager.GET_META_DATA);
if(applicationInfo == null){
throw new IllegalArgumentException(" get application info = null, has no meta data! ");
}
return applicationInfo.metaData.getString(Constants.BFC_UPLOADLOAD_HOST_APP_ID);
} catch (PackageManager.NameNotFoundException e) {
throw new IllegalArgumentException(" get application info error! ", e);
}
}
5.为packagename赋值,并获取uri动态的string:
String packagename = applicationInfo ;
String uri= TextUtils.concat(packagename , ".bbkupload").toString()
6.获取到authorties 的值后。我们便可以在contentprovider创建时配置到URI里面,
应用使用的时候也不用配置contentprovider了
示例如下:URI_MACHER.addURI(uri, "my_uploads", MY_UPLOADS);



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐