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

本文介绍如何利用AndroidManifest中的meta-data数据,结合${applicationId},动态更改ContentProvider的authorities,以适应不同应用的使用需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 因为业务需要,做个库给应用使用,需要动态的给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);


  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值