我已經創建了一個自定義內容提供者,它將被更多的幾個應用程序訪問。我在我的提供程序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