/*
========================================================================================
Filename: 18_CustomBroadcast.txt
Program 18: Create an app to broadcast a custom intent.
Files Included: MainActivity.java, MyReceiver.java
========================================================================================

WHAT ALL TO DO / SETUP INSTRUCTIONS:
----------------------------------------------------------------------------------------
1. UI Components to Add (in res/layout/activity_main.xml):
   Add 1 TextView: 'Custom Broadcast'
   Add 1 Button: Text: 'Send Message', onClick: 'sendMessage'

2. Layout Configuration:
   - LinearLayout (vertical, gravity='center', padding 20dp)

3. Menu Configuration:
   - None required.

4. Themes Configuration (res/values/themes.xml):
   - Default theme.

5. AndroidManifest.xml:
   Register Custom Receiver in AndroidManifest.xml:
   <receiver android:name=".MyReceiver" android:exported="false">
       <intent-filter>
           <action android:name="com.example.custombroadcast.MY_ACTION" />
       </intent-filter>
   </receiver>

6. Additional Files & Resources Required:
   - Create MyReceiver.java extending BroadcastReceiver to show Toast on receiving the broadcast.
========================================================================================
*/

// ======================================================================================
// File: MainActivity.java
// ======================================================================================
package com.example.custombroadcast;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    public static final String MY_ACTION="com.example.custombroadcast.MY_ACTION";
    @Override
    protected void onCreate(Bundle b) {
        super.onCreate(b);
        setContentView(R.layout.activity_main);
    }

    public void sendMessage(View v) {
        Intent i=new Intent(MY_ACTION);
        i.putExtra("message","Hello from MainActivity...");
        i.setPackage(getPackageName());
        sendBroadcast(i);
    }
}

// ======================================================================================
// File: MyReceiver.java
// ======================================================================================
package com.example.custombroadcast;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context c,Intent i) {
        String m=i.getStringExtra("message");
        Toast.makeText(c,"Custom Broadcast Received: "+m,Toast.LENGTH_LONG).show();
    }
}
