我正在制作一款控制手机网络状态的应用(在2G / 3G之间切换)。
由于某些原因,我的应用程序使用sharedUserId =“android.uid.system”,但在Phone的上下文中运行,(即android:process =“com.android.phone”) 一切正常,直到我开始使用AlarmManager。
在我的服务的onCreate()(当然是在进程com.android.phone的上下文中运行)中,以下函数给出异常:
pi = PendingIntent.getBroadcast(this, 0, new Intent(this, AlarmReceiver.class), 0);
我收到了这个错误:
E/AndroidRuntime(21289): Caused by: java.lang.SecurityException: Permission Denial: getIntentSender() from pid=21289, uid=1001, (need uid=1000) is not allowed to send as package com.net_toggle
AlarmReceiver是我服务的私有类,具有相同的上下文。
我当然在互联网和本网站上搜索,但找不到解决方案。
答案 0 :(得分:0)
提供有关此问题的链接
https://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-1-introduction/
修改:
您是否已将<receiver>
添加到您的清单中?
喜欢:
<receiver android:name="MyScheduleReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver android:name="MyStartServiceReceiver" >
</receiver>
并且还允许:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>