在系统应用中使用sendBroadcast

时间:2013-04-15 11:15:51

标签: android

我在从应用中发送Broadcast时遇到问题,该应用会作为系统应用加载到自定义ROM中(在android:sharedUserId="android.uid.system"中使用Manifest)。

我遇到的问题是尝试执行简单的sendBroadcast:

Intent newIntent = new Intent(intent.getExtras().getString(BUNDLE_ACTION_TO_REPLY_ON));
newIntent.putExtra(BUNDLE_FILE_URI, bitmapFile.getAbsolutePath());
newIntent.putExtra(BUNDLE_REPLY_WIDTH, width);
newIntent.putExtra(BUNDLE_REPLY_HEIGHT, height);
newIntent.putExtra(BUNDLE_REPLY_EXTRA, extra);
context.sendBroadcast(newIntent);

我在Logcat中收到此警告:

Calling a method in the system process without a qualified user

这是warnIfCallingFromSystemProcess()进程中的ContextImpl.java抽出来的。

有人知道为什么(如果我需要“修理”它)?

1 个答案:

答案 0 :(得分:12)

使用以下函数代替sendBroadcast(意图意图)。

  

void sendBroadcastAsUser(Intent intent,UserHandle用户)

例如,

  

context.sendBroadcastAsUser(newIntent,new UserHandle(UserHandle.USER_CURRENT));