How to pass data to BroadcastReceiver?

android, android-intent, broadcastreceiver, sms, string

Solution

Following @Jason 's example...I did this...

In MainActivity or any activity from where you want to send intent from

Intent intent = new Intent("my.action.string");
intent.putExtra("extra", phoneNo); \\ phoneNo is the sent Number
sendBroadcast(intent);

and then in my SmsReceiver Class I did this

public void onReceive(Context context, Intent intent) {
  String action = intent.getAction();

  Log.i("Receiver", "Broadcast received: " + action);

  if(action.equals("my.action.string")){
     String state = intent.getExtras().getString("extra");

  }
}

And in manifest.xml I added `"my.action.string"` though it was an option..

<receiver android:name=".SmsReceiver" android:enabled="true">
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        <action android:name="my.action.string" />
        <!-- and some more actions if you want -->
    </intent-filter>
</receiver>

worked like charm!!

Problem

What I am trying to do is that the numbers to which my application sends messages to, are passed to the BraodcastReceiver...but so far either I am getting null or BroadcastReceiver just simply crashes.. here is my intent for BroadcastReceiver from CreateMessage class... ``` Intent intent = new Intent(); Bundle bundle = new Bundle(); bundle.putString("phN", phoneNo); intent.putExtras(bundle); startActivity(intent); ``` And in BroadcastReceiver (SmsReceiver class) I am trying to catch intent like this.. ``` public void onReceive(Context context, Intent intent) { //---get the SMS message passed in--- Bundle bundle = intent.getExtras(); try{ //receiveNumbers = intent.getExtras().get("phN").toString(); String receiveNumbers = intent.getStringExtra("phN"); Toast.makeText(context, receiveNumbers, Toast.LENGTH_LONG).show(); }catch(Exception e){ e.printStackTrace(); } ``` My Manifest File: ``` <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.AEM_n" android:versionCode="2" android:versionName="2.0"> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.READ_SMS"/> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true"> <activity android:name=".new_menu" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:label="@string/app_name" android:name=".SetEvent" > <intent-filter> <action android:name="com.AEM_n.SETEVENT" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:label="@string/app_name" android:name=".AddParticipants" /> <activity android:label="@string/app_name" android:name=".CreateMessage" /> <activity android:label="@string/app_name" android:name=".DataBaseClass" /> <activity android:label="@string/app_name" android:name=".IntentReceiver"/> <activity android:label="@string/app_name" android:name=".SmsReceiver" /> <receiver android:name=".SmsReceiver" android:exported="true"> <intent-filter android:priority="999"> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver> </application> </manifest> ``` I have already tried all the answers given Stackoverflow...But no use... Please guys tell me where I am going wrong...Thanks! Error Log: ``` 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): FATAL EXCEPTION: main 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): java.lang.RuntimeException: Error receiving broadcast Intent { act=com.myapp.myaction (has extras) } in com.AEM_n.SmsReceiver@405a07c8 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:722) 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): at android.os.Handler.handleCallback(Handler.java:587) 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): at android.os.Handler.dispatchMessage(Handler.java:92) 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): at android.os.Looper.loop(Looper.java:123) 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): at android.app.ActivityThread.main(ActivityThread.java:3701) 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): at java.lang.reflect.Method.invokeNative(Native Method) 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): at java.lang.reflect.Method.invoke(Method.java:507) 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862) 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): at dalvik.system.NativeStart.main(Native Method) 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): Caused by: java.lang.NullPointerException 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): at com.AEM_n.SmsReceiver.onReceive(SmsReceiver.java:37) 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:709) 04-07 02:34:02.770: ERROR/AndroidRuntime(25593): ... 9 more ```

Original source