1

最近、コンテンツ プロバイダーからデータを読み取るウィジェットをリリースしました。テストでは問題なく動作しているように見えましたが、コンテンツ プロバイダーのアクセス許可に関連する多数のクラッシュ レポートを受け取りました。

これは、クラッシュ レポートから得られるエラーです。

java.lang.SecurityException: Permission Denial: reading com.anydo.providers.TasksContentProvider uri content://com.anydo.provider/tasks from pid=24036, uid=10142 requires com.anydo.provider.permission.READ_ANYDO_TASKS, or grantUriPermission()

さまざまな質問からわかることから、これはマニフェスト ファイルに関連している可能性があるため、次のようになります。

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="17" />

<uses-permission android:name="com.anydo.provider.permission.READ_ANYDO_TASKS" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <receiver android:name="AnydoWidgetProvider" >
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>

        <meta-data
            android:name="android.appwidget.provider"
            android:resource="@xml/anydo_widget_provider" />
    </receiver>

    <activity 
        android:name="com.gongchangstudio.minimalanydowidget.WidgetSettings" 
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
        </intent-filter>
    </activity>
     <service android:name="com.gongchangstudio.minimalanydowidget.TaskWidgetService"
        android:permission="android.permission.BIND_REMOTEVIEWS"
        android:exported="false" />

</application>

何か案は?

4

1 に答える 1

0

Stack Overflow の別の場所で答えを見つけました - Android Permission denial in Widget RemoteViewsFactory for Content

次のコードを onDataSetChanged() に追加すると問題が解決したため、同じスレッドで実行されているパーミッションと関係があると思います。

Thread thread = new Thread() {
    public void run() {
        query();
    }
};
thread.start();
try {
    thread.join();
} catch (InterruptedException e) {
}
于 2013-06-25T01:08:12.720 に答える