因为业务需要,做个库给应用使用,需要动态的给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">
  应用使用的时候也不用配置contentprovider了
  示例如下:URI_MACHER.addURI(uri, "my_uploads", MY_UPLOADS);
    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 ;
6.获取到authorties 的值后。我们便可以在contentprovider创建时配置到URI里面,
   String uri= TextUtils.concat(packagename , ".bbkupload").toString()
  </provider>
3.获取meta-data的值

利用meta-data的数据,动态更改contetnprovider的authorities相关推荐

  1. backtrader利用小时间粒度数据动态合成大时间粒度数据:replay功能

    扫地僧backtrader技术教程获取方法 =========================== 看过我教程的同学都知道,backtrader中可以用重采样resample功能来将小粒度数据合成大粒 ...

  2. python动态图形_利用matplotlib实现根据实时数据动态更新图形

    我就废话不多说了,直接上代码吧! from time import sleep from threading importThread import numpy as np import matplo ...

  3. 微信小程序 data中数据值的更改与储存

    微信小程序 data中数据值的更改与储存 this.setData this.setData 直接更改 success(res){this.setData({list:res.data.data}) ...

  4. Java技术:实现pdf和Excel的生成及数据动态插入、导出

    1 序言 Excel.PDF的导出.导入是我们工作中经常遇到的一个问题,刚好今天公司业务遇到了这个问题,顺便记个笔记以防下次遇到相同的问题而束手无策. 公司有这么两个需求: 需求一.给了一个表单,让把 ...

  5. Vue.set()实现数据动态响应

    2019独角兽企业重金招聘Python工程师标准>>> this.$set()和Vue.set()本质方法一样,前者可以用在methods中使用. 在vue里面,我们操作最多的就是各 ...

  6. 硬核!Java 实现数据动态插入,生成 PDF、EXECL,完美导出功能!

    >>号外:关注"Java精选"公众号,回复"面试资料",免费领取资料!"Java精选面试题"小程序,3000+ 道面试题在线刷, ...

  7. Java实现pdf和Excel的生成及数据动态插入、导出

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 作者:慢时光 cnblogs.com/Tom-shushu/ ...

  8. MITRE:利用微生物组时间序列数据推断与宿主状态变化相关的特征

    文章目录 MITRE:利用微生物组时间序列数据推断与宿主状态变化相关的特征 热心肠日报 写在前面 主要结果 图1. MITRE通过对时间序列的微生物群落的系统发育信息进行学习,同宿主的状态改变联系起来 ...

  9. 【JS 逆向百例】某空气质量监测平台无限 debugger 以及数据动态加密分析

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 文章目录 声明 逆向目标 写在前面 绕过无限 debugger 方法一 方法二 方法三 抓包分析 加密入口 动态 JS 本地改写 ...

最新文章

  1. 强化学习vs遗传算法-人工智能在模拟领域的应用
  2. 输入过欠压保护电路原理图
  3. 判断一个数列是不是搜索二叉树后续遍历输出的结果
  4. win7网站服务器空间怎么清理,win7如何清理c盘空间_win7磁盘空间不足怎么清理
  5. 《编译原理》实验报告——递归下降语法分析器的构建
  6. php模块下载,douphp下载中心模块修改版
  7. 【7】jQuery学习——入门jQuery选择器之过滤选择器-可见性过滤选择器
  8. 华为交换机CPU SNMP OID [简单整理]
  9. Oracle认证体系的重大变化,你需要知道这些...
  10. python 配置文件介绍
  11. ES6——let、const和var的用法和区别
  12. Flutter代码锦囊---集中管理路由与导航
  13. mysql行级锁unique_MySQL行级锁,表级锁,页级锁详解
  14. c语言山东科技大学答案oj,山东科技大学oj部分题目记答案.doc
  15. 实现.pb模型和.pbtxt模型之间的转换 python
  16. 【目标检测】YOLO系列总结
  17. iNode用户win10开热点手机连接时总显示获取IP中的解决方法
  18. 基于java的奖学金评定管理系统_基于java的奖学金评定系统
  19. 计算机英语解读,解释计算机Windows的学习英语
  20. 为什么我会这么多技术,还这么难找工作

热门文章

  1. python股票基金交易模拟系统django+vue
  2. 两个虚拟机之间互传文件
  3. 苏宁视频云直播客户端的优化方案
  4. breeze densematrix 基本操作
  5. Linux-CentOS 7.9 - 8、Linux 压缩 解压
  6. 内存泄露检测工具VLD相关配置
  7. 高斯过程之条件分布(Conditional Distribution)
  8. Python基础之遍历循环、条件循环、嵌套循环
  9. 我又进入天堂2的深渊了
  10. 如何延长电动车铅酸蓄电池寿命