android - 在 android 应用程序中创建风味时的内容提供程序问题
问题描述
我已经为 android 项目创建了风格。以下是我在 gradle 文件中实现的更改。
android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "com.collegemobile.free.free"
minSdkVersion 19
targetSdkVersion 28
versionCode 5
versionName "2.1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
renderscriptTargetApi 23
renderscriptSupportModeEnabled true
}
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
flavorDimensions"default"
productFlavors{
paid{
buildConfigField("String","paid","paid")
applicationId 'com.collegemobile.paid.paid'
dimension "default"
}
free{
buildConfigField("String", "free", "free")
applicationId 'com.collegemobile.free.free'
dimension "default"
}
}
它工作正常,但现在它显示内容提供商的问题。我在 Manifest.xml 文件中做了以下更改。在 android:authorities="${applicationId} 我添加了 $ applicationid.
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<provider
android:name=".models.DataProvider"
android:authorities="${applicationId}"
android:exported="false"
android:syncable="true"></provider>
但它给了我以下例外。
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.collegemobile.paid.paid, PID: 29652
java.lang.RuntimeException: Unable to create application com.collegemobile.free.free: java.lang.SecurityException: Permission Denial: opening provider com.collegemobile.free.free.DataProvider from ProcessRecord{25cd8f9 29652:com.collegemobile.paid.paid.bbfg/u0a106} (pid=29652, uid=10106) that is not exported from UID 10103
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5876)
at android.app.ActivityThread.access$1100(ActivityThread.java:199)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.SecurityException: Permission Denial: opening provider com.collegemobile.itracks.bbfg.models.DataProvider from ProcessRecord{25cd8f9 29652:com.collegemobile.massmutual.bbfg/u0a106} (pid=29652, uid=10106) that is not exported from UID 10103
at android.os.Parcel.createException(Parcel.java:1942)
at android.os.Parcel.readException(Parcel.java:1910)
at android.os.Parcel.readException(Parcel.java:1860)
at android.app.IActivityManager$Stub$Proxy.getContentProvider(IActivityManager.java:4181)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:5970)
at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2592)
at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1828)
at android.content.ContentResolver.query(ContentResolver.java:786)
at android.content.ContentResolver.query(ContentResolver.java:752)
at android.content.ContentResolver.query(ContentResolver.java:710)
at com.collegemobile.itracks.bbfg.BBFG.initOfflineMsgQueue(BBFG.java:342)
at com.collegemobile.itracks.bbfg.BBFG.onCreate(BBFG.java:332)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5871)
at android.app.ActivityThread.access$1100(ActivityThread.java:199)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.am.ActivityManagerService.getContentProviderImpl(ActivityManagerService.java:12188)
at com.android.server.am.ActivityManagerService.getContentProvider(ActivityManagerService.java:12585)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:357)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3291)
at android.os.Binder.execTransact(Binder.java:731)
解决方案
推荐阅读
- python-3.x - python3:如何计算按 3 分组的 10 个因子(每个因子有 15 个值)的所有变化
- sql-server-2000 - 在左连接 SQL 语句中选择总和显示的空值
- python - Seaborn barplot n 最小/最大值
- apache-kafka - 为多个分区消耗 kafka 批处理
- javascript - Javascript async await 相当于 C# Task.Delay
- java - 如何根据java中提供的天数计算下一个日期(天数月和年)?
- c++ - 使用 boost::di 制作单例时如何传递构造函数参数
- python - 在单元测试期间跳过发送电子邮件功能和 celery 任务
- python - csv中的上采样浮点第二系列(使用熊猫)?
- python - 无法多次使用循环合并熊猫数据框