Подтвердить что ты не робот

Использование sendBroadcast в системном приложении

У меня возникла проблема с отправкой 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().

Кто-нибудь знает, почему (и если мне нужно "исправить" его)?

4b9b3361

Ответ 1

Используйте функцию ниже вместо sendBroadcast (намерение намерения).

void sendBroadcastAsUser (намерение намерения, пользователь UserHandle)

например,

context.sendBroadcastAsUser(newIntent, новый UserHandle (UserHandle.USER_CURRENT));