2017-08-11 109 views
0

我試圖設置一個接收器,以便在手機重新啓動後重新啓動我的應用程序警報/通知。廣播接收器的權限拒絕

即時得到堅持與權限拒絕錯誤:

W/BroadcastQueue: Permission Denial: receiving Intent { act=android.intent.action.BOOT_COMPLETED flg=0x9000010 (has extras) } to com.closedbracket.trackit/.BootBroadcastReceiver requires android.permission.RECEIVE_BOOT_COMPLETED due to sender null (uid 1000) 

我已經看了很多的做題呈三角這一點,但還沒有找到一個解決辦法。

這是我的清單:

<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> 
    <uses-permission android:name="com.android.permission.RECEIVE_BOOT_COMPLETED" /> 
<application 
.... 
<receiver 
      android:name="com.closedbracket.trackit.BootBroadcastReceiver" 
      android:enabled="true" 
      android:exported="false" 
      android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
       <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
      </intent-filter> 
     </receiver> 
</application> 

這是我BootBroadcastReceiver:

public class BootBroadcastReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    Log.i("BootBroadcastReceiver", "Received"); 
}} 

我做了重新啓動功能與Android Stuido模擬器測試這一點。然後我檢查日誌,並看到權限拒絕行參考我的廣播接收器,並沒有看到我的日誌的onReceive方法。

從字面上盡我所能,甚至改變清單的android:enable/export值,並在裏面添加權限。沒有區別。

如果有人有任何想法,請讓我知道。謝謝。

回答

2

您有權限com.android.permission.RECEIVE_BOOT_COMPLETED,但正如錯誤消息所述,您應該在開始時擁有android.permission.RECEIVE_BOOT_COMPLETED而不使用com.

0

每個意圖過濾器只能有一個動作。這是你的問題。 出於某種原因,它回落到列表中的最後一個,在你的情況QUICKBOOT_POWERUN。 在廣播接收器中添加2個意圖過濾器,每個過濾器只有1個動作,它將成功接收兩個廣播。