3

我正在制作一个控制电话网络状态的应用程序(在 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 是我的服务的私有类,具有相同的上下文。

我当然在互联网和这个网站上搜索过,但找不到解决方案。

4

1 回答 1

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"/>
于 2013-07-13T20:49:30.830 回答