Plectre
Plectre

Reputation: 1

BroadcastReceiver for android os return nothing

This is little snipet to try BroadcastReciever android but i dont understand wath's wrong. In fact just callIntent return log. my little brain it's burning. if somebody can tell me why ? Sorry for my bad english !

```
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test.plectre.broadcast">

    <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=".MyReciever" >
            <intent-filter>
                <action android:name="com.plectre"/>
            </intent-filter>
        </receiver>
    </application>

</manifest>
```
    public void callIntent() {
        Intent intent = new Intent();
        intent.setAction("com.plectre");
        intent.putExtra("frist", "Intent premier" );
        sendBroadcast(intent);
        Log.i("callIntent", "Tag");
    }
```
public class MyReciever extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

            //String result = intent.getStringExtra("first");
            Toast.makeText(context, "Result", Toast.LENGTH_LONG).show();
            Log.i("Broadcast", " Receiver");

    }
```

No error, no crash, nothing !! :=(

Upvotes: 0

Views: 38

Answers (1)

JakeB
JakeB

Reputation: 2113

Create an explicit intent by explicitly declaring the receiver when you create the intent. At present your intent is implicit.

public void callIntent() {
    // Explicitly declare the receiver class
    Intent intent = new Intent(this, MyReciever.class);
    intent.setAction("com.plectre");
    intent.putExtra("frist", "Intent premier" );
    sendBroadcast(intent);
    Log.i("callIntent", "Tag");
}

Additional reading: https://developer.android.com/guide/components/intents-filters#ExampleExplicit

Also. You declare the intent's Extra as "frist" and try to receive at as "first". This needs to be rectified.

You should ensure that the correct action is taken with the specified Intent Action in your receiver:

@Override
public void onReceive(Context context, Intent intent) {
    if ("com.plectre".equals(intent.getAction())) {
        final String result = intent.getStringExtra("first");
        Toast.makeText(context, "Result", Toast.LENGTH_LONG).show();
        Log.i("Broadcast", " Receiver");
    }
}

Upvotes: 1

Related Questions