我在从应用中发送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
抽出来的。
有人知道为什么(如果我需要“修理”它)?
答案 0 :(得分:12)
使用以下函数代替sendBroadcast(意图意图)。
void sendBroadcastAsUser(Intent intent,UserHandle用户)
例如,
context.sendBroadcastAsUser(newIntent,new UserHandle(UserHandle.USER_CURRENT));