我无法从作为系统应用程序加载到自定义rom中的应用程序发送Broadcast(在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
这是由 ContextImpl.java warnIfCallingFromSystemProcess()进程中抽出的。

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

最佳答案

使用以下函数代替sendBroadcast(Intent intent)

void sendBroadcastAsUser(Intent intent, UserHandle user)
例如:
context.sendBroadcastAsUser(newIntent, new UserHandle(UserHandle.USER_CURRENT));

10-08 09:20