2013-06-21 76 views
0

我最近發佈了一個用於從內容提供者讀取數據的小部件。它在測試中似乎工作正常,但我收到了許多與內容提供者權限相關的崩潰報告。即使已添加權限,也會獲得「SecurityException:權限拒絕」

這是我從崩潰報告得到的錯誤:

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> 

有沒有想法?

+0

您是否不必先定義權限? ''權限 android:name =「com.anydo.provider.permission.READ_ANYDO_TASKS」 android:protectionLevel =「signature」/>'我不確定,只是認爲它可能有幫助 – SeanSWatkins

回答

0

找到了答案其他地方堆棧溢出 - 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) { 
} 
+0

對不起,但這只是一個解決方法;有關解決方案,請參閱該問題的[Jeff的答案](http://stackoverflow.com/a/20645908/2420519)。 –

相關問題