我已经创建了一个自定义内容提供者,它将被更多的几个应用程序访问。我在我的提供程序AndroidManifest.xml文件中包含权限TAG,而在第二个应用程序中,我包含了使用权限标记,但没有成功。 Logcat显示我:权限拒绝:开放供应商
java.lang.SecurityException: Permission Denial: opening provider com.company.contentprovider.AplicacaoContentProvider requires READ_DATABASE or WRITE_DATABASE.
我已经搜索类似的问题,但似乎一切都是正确的。有任何想法吗 ? 谢谢!
这里是我的供应商AndroidManifest.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company.contentprovider"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<permission android:name="READ_DATABASE" android:label="@string/app_read" android:protectionLevel="normal"></permission>
<permission android:name="WRITE_DATABASE" android:label="@string/app_write" android:protectionLevel="normal"></permission>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".CompanyProvider"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider android:name="AplicacaoContentProvider"
android:authorities="com.company.contentprovider"
android:exported="true"
android:readPermission="@string/app_read"
android:writePermission="@string/app_write"
/>
</application>
这是我的第二个应用程序的AndroidManifest.xml文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.testeprovider"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
<uses-permission android:name="android.permissions.READ_DATABASE"/>
<uses-permission android:name="android.permissioms.WRITE_DATABASE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.testeprovider.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
谢谢!我明天开始工作,我会做出这些修改并让你知道结果! –
它的工作方式,就像你说的那样,但还有另一个疑问。比方说,我有20多个可以访问我的内容提供商的应用程序。我希望每个应用都检查内容提供者是否存在。如果是这样,那么就使用权限来记录数据。否则,注册提供商并记录数据。所以,我想在每个应用程序的AndroidManifest.xml文件中包含权限和使用权限标签。它会工作吗? youtube downloader –
@MauricioAlencar:“我想我的应用程序中的每一个检查,如果内容提供商存在,如果是的话,那么就。使用许可来记录数据,否则,注册提供商并记录数据一个。” - 这是一个非常糟糕的计划。请让所有20个应用程序完全独立。就目前而言,您的计划表示,如果用户恰好卸载了20个中的1个,而1个恰好是决定成为ContentProvider的1个,则他们会丢失所有20个应用程序的数据。 – CommonsWare