2017-08-11 105 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个动作,它将成功接收两个广播。

相关问题