Я посылаю трансляцию из appA в appB.Чтобы обновить мой код до Android, я преобразовал неявную трансляцию в явную, но она не работает. - PullRequest
0 голосов
/ 25 февраля 2019

Manifest.xml принимающего приложения.

<uses-permission android:name="android.permission.WAKE_LOCK"/>
<receiver android:name=".DemoReceiver"
        android:exported="true" android:enabled="true">
        <intent-filter>
            <action android:name="com.example.myparentapplication.demo"/>
        </intent-filter>
</receiver>

Получатель, объявленный в принимающем приложении:

public class DemoReceiver extends BroadcastReceiver {

public DemoReceiver(){}

@Override
public void onReceive(Context context, Intent intent) {
    Log.v(TAG, "Received");

    String data = intent.getStringExtra("data");
    Toast.makeText(context,"opening the intent data : " + data,Toast.LENGTH_LONG ).show();
  }
}

Трансляция, отправленная широковещательным приложением:

Intent intent = new Intent("com.example.myparentapplication.demo");
            intent.putExtra("data","job dispatched");
            intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
            intent.setComponent(new ComponentName(getApplicationContext().getPackageName(), "com.example.myparentapplication.DemoReceiver"));
            sendBroadcast(intent);

Этокак я использую трансляцию после обновления моего API до Android 'O', но я не получаю никакой трансляции.где, как в документации это говорит о том, что явное вещание разрешено регистрировать в манифесте после Android Oreo.Пожалуйста, направьте меня соответствующим образом, что здесь не так? Примечание: Приложение получения - это фоновое приложение.поэтому я не могу зарегистрировать трансляцию динамически.Я перепробовал почти все решения от переполнения стека, но все же он не работает.

1 Ответ

0 голосов
/ 25 февраля 2019
intent.setComponent(new ComponentName(getApplicationContext().getPackageName(), "com.example.myparentapplication.DemoReceiver"));

getApplicationContext().getPackageName() вернет идентификатор приложения , отправляющего приложение.Вашему ComponentName нужен идентификатор приложения , получающего приложение.

...