问题是,即使未导出CP,它也必须具有唯一的权限.如果它不是唯一的,那么您无法在同一部手机上安装具有相同库的多个应用程序(INSTALL_Failed_CONFliCTING_PROVIDER).
我知道我可以使用应用程序ID在AndroidManifest中定义提供程序,如下所示:
<provIDer androID:authoritIEs="${applicationID}.provIDer.test" androID:name=".storage.db.MyContentProvIDer" androID:exported="false" />
但我找不到一个解决方案来在运行时生成代码中的权限来正确初始化UriMatcher.
BuildConfig.APPliCATION_ID返回库项目的ID,而不是应用程序.
我可以尝试从应用程序的上下文中获取packageID,但如果应用程序使用具有不同appIDs的flavor,那么它不是最佳解决方案.
所以我的想法是:
>在运行时在我的库代码中找到合适的appplicationID(当使用具有不同应用程序ID的flavor时)
>找到一种方法来正确匹配我的UriMatcher中的URI,而无需了解权限.
private static String getAuthority(final Context appContext) throws PackageManager.nameNotFoundException { final Componentname componentname = new Componentname(appContext,MyContentProvIDer.class.getname()); final ProvIDerInfo provIDerInfo = appContext.getPackageManager().getProvIDerInfo(componentname,0); return provIDerInfo.authority;}总结
以上是内存溢出为你收集整理的android库项目中的ContentProvider全部内容,希望文章能够帮你解决android库项目中的ContentProvider所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)