Мой пользовательский приемник не получает намерения - PullRequest
0 голосов
/ 07 декабря 2018

Я написал свой собственный приемник вещания, чтобы получать намерения от моего другого приложения, но оно ничего не получает.Я уверен, что первое приложение отправляет широковещательную рассылку.Кто-нибудь может мне помочь?Приложение 1:

public void broadcastIntent() {
    Intent intent = new Intent();
    String permissions = "com.example.android.mybroadcastreceiver.my_permissions.MY_PERMISSION";
    intent.putExtra("name", editName.getText().toString());
    intent.putExtra("price", Float.parseFloat(editPrice.getText().toString()));
    intent.putExtra("quantity", Integer.parseInt(editQuantity.getText().toString()));
    intent.setAction("com.example.android.projekt1.notification");
    sendBroadcast(intent, permissions);
}

И я запускаю эту функцию в своем методе setOnClickListener.Вот мой широковещательный приемник:

public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    Toast.makeText(context, "Intennt received.", Toast.LENGTH_LONG).show();
    Intent serviceIntent = new Intent(context, MyService.class);
    serviceIntent.putExtras(intent);
    context.startService(serviceIntent);
}

} Поэтому при отправке широковещательной рассылки у меня 0 тостовых сообщений, и моя служба тоже не работает.Существует AndroidManifest от получателя:

<?xml version="1.0" encoding="utf-8"?>

<permission-group android:name="com.example.android.mybroadcastreceiver.my_permissions"
    android:label="my permissions group"/>
<permission android:name="com.example.android.mybroadcastreceiver.my_permissions.MY_PERMISSION"
    android:permissionGroup="com.example.android.mybroadcastreceiver.my_permissions"
    android:label="my permission"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <receiver android:name=".MyBroadcastReceiver"
        android:permission="com.example.android.mybroadcastreceiver.my_permissions.MY_PERMISSION">
        <intent-filter>
            <action android:name="com.example.android.projekt1.notification">
            </action>
        </intent-filter>
    </receiver>
    <service android:name="MyService" />
</application>

Сначала я запускаю свой приемник, затем я запускаю основное приложение и нажимаю кнопку для отправки трансляции

1 Ответ

0 голосов
/ 08 декабря 2018

установить имя пакета приложения таргетинга:

public void broadcastIntent() {
    Intent intent = new Intent();
    String permissions = "com.example.android.mybroadcastreceiver.my_permissions.MY_PERMISSION";
    intent.putExtra("name", editName.getText().toString());
    intent.putExtra("price", Float.parseFloat(editPrice.getText().toString()));
    intent.putExtra("quantity", Integer.parseInt(editQuantity.getText().toString()));
    intent.setAction("com.example.android.projekt1.notification");
    intent.setPackage("Package name of receiver app");// set Package of targeting app
    sendBroadcast(intent, permissions);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...