Я всегда вижу E ActivityManager: Отправка незащищенной трансляции из системы в Android 7. Что это значит?

Я пытаюсь отправить намерение из несистемного приложения, используя следующую функцию.

public static void sendIntent() {
        if (null != _context) {
            Intent intent = new Intent("com.test.testApp.testIntent");
            intent.setPackage(_context.getPackageName());
            _context.sendBroadcast(intent);
        }
    }

Но я всегда вижу сообщение об ошибке от ActivityManager, как показано ниже. То же самое намерение вещания (приложение) отлично работает в andorid 6.0, но выдает ошибку в android 7.1.1. Мне нужно что-то изменить для Android 7.1.1?

4-10 15:06:34.423 1615 2921 E ActivityManager: Отправка незащищенной широковещательной рассылки com.test.testApp.testIntent из системы 2886:com.test.testApp/u0a117 pkg com.test.testApp

В ListFragment я регистрирую получателя следующим образом:

 @Override
    public void onStart() {
        super.onStart();
        getActivity().registerReceiver((receiver),
                new IntentFilter(com.test.testApp.testIntent));
        TextView textDownload = (TextView) getActivity().findViewById(R.id.output);
        textDownload.setVisibility(android.view.View.INVISIBLE);
    }

person savi    schedule 11.04.2017    source источник
comment
Проверьте фоновую оптимизацию по этой ссылке: developer.android.com/about /versions/nougat/ Надеюсь, это поможет   -  person Sneh Pandya    schedule 11.04.2017
comment
Какова фактическая строка действия? Сомневаюсь, что это "com.test.testApp.testIntent".   -  person CommonsWare    schedule 11.04.2017
comment
@SnehPandya Я не использую ни один из этих CONNECTIVITY_ACTION , ACTION_NEW_PICTURE или ACTION_NEW_VIDEO. Как это применимо к моей проблеме?   -  person savi    schedule 11.04.2017
comment
Строка действия @CommonsWare — com.testApp.savi.STATUS_CHANGE.   -  person savi    schedule 11.04.2017
comment
:: shrug :: Попробуйте изменить имя, особенно бит STATUS_CHANGE, на случай, если возникнет какая-то странная ошибка, когда Android проверяет строки действий, чтобы увидеть, что можно, а что нельзя отправлять. Также обратите внимание, что неявные трансляции, подобные этой, не работают на Android O, как только ваш targetSdkVersion поднимется до O или выше (или во что-то еще, во что превратится O после того, как Android O выйдет в окончательной форме). Возможно, вы захотите рассмотреть возможность использования чего-то другого.   -  person CommonsWare    schedule 11.04.2017
comment
@CommonsWare Спасибо, это сработало.   -  person savi    schedule 11.04.2017
comment
@CommonsWare Мое приложение никогда не было системным. Почему я получаю эту ошибку. Также, каковы различные способы, которыми я могу сделать свое приложение системным приложением.   -  person savi    schedule 12.04.2017
comment
Почему я получаю эту ошибку - возможно, ошибка в Android. Какое устройство или эмулятор вы используете для тестирования? Кроме того, какими способами я могу сделать свое приложение системным - создайте свой собственный ПЗУ.   -  person CommonsWare    schedule 12.04.2017
comment
@CommonsWare Я имел в виду, как сделать Android системным приложением? Я знаю, что мы можем использовать android.uid.system в androidManifest.xml. Есть ли другой способ сделать приложение для Android системным приложением?   -  person savi    schedule 12.04.2017
comment
Есть ли другой способ сделать приложение для Android системным приложением? -- нет. И единственный способ использовать android.uid.system — это если ваше приложение подписано тем же ключом подписи, который подписывает остальные предустановленные приложения, и для этого вам нужно создать собственное ПЗУ.   -  person CommonsWare    schedule 12.04.2017
comment
FWIW, я не могу воспроизвести вашу проблему. Отправка трансляции с помощью sendBroadcast(new android.content.Intent("com.testApp.savi.STATUS_CHANGE")); отлично работает на Android 7.1, когда я помещаю этот код в onCreate() действия. Я не получаю ошибку, которую вы привели.   -  person CommonsWare    schedule 12.04.2017
comment
@CommonsWare Я использую это намерение в службе, а не в действии.   -  person savi    schedule 12.04.2017
comment
Я также не получаю этого сбоя при трансляции с IntentService. Если у вас есть возможность создать воспроизводимый тестовый пример, рассмотрите возможность подать заявку.   -  person CommonsWare    schedule 12.04.2017
comment
Можете ли вы сделать свое приложение системным и проверить, возникнет ли у вас такая же проблема?   -  person savi    schedule 12.04.2017


Ответы (1)


Это может помочь,

Если у вас в AndroidManifest.xml указано «android:sharedUserId="android.uid.system", то объявите защищенную трансляцию.

Ссылка: https://stackoverflow.com/a/50240471

person DesignIsLife    schedule 29.03.2019