/*
========================================================================================
Filename: 19_AirplaneMode.txt
Program 19: Create an app to broadcast a system intent. (AIRPLANE MODE CHANGED).
Files Included: MainActivity.java, AirplaneModeReceiver.java
========================================================================================

WHAT ALL TO DO / SETUP INSTRUCTIONS:
----------------------------------------------------------------------------------------
1. UI Components to Add (in res/layout/activity_main.xml):
   Add 2 TextView:
     - tvTitle: 'Airplane Mode Broadcast'
     - tvInstruction: 'Turn Airplane Mode ON or OFF and observe the Toast message.'

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:
   Standard launcher activity:
   <activity android:name=".MainActivity" android:exported="true" />

6. Additional Files & Resources Required:
   - Create AirplaneModeReceiver.java; dynamically registered in onStart() using IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED) and unregistered in onStop().
========================================================================================
*/

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

import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    final AirplaneModeReceiver receiver=new AirplaneModeReceiver();
    @Override
    protected void onCreate(Bundle b) {
        super.onCreate(b);
        setContentView(R.layout.activity_main);
        IntentFilter f=new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED);
        if(android.os.Build.VERSION.SDK_INT>=33)registerReceiver(receiver,f,Context.RECEIVER_EXPORTED);
        else registerReceiver(receiver,f);
    }

    @Override
    protected void onDestroy() {
        try {
            unregisterReceiver(receiver);
        }

        catch(Exception ignored) {
        }

        super.onDestroy();
    }
}

// ======================================================================================
// File: AirplaneModeReceiver.java
// ======================================================================================
package com.example.airplanemode;

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

public class AirplaneModeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context c,Intent i) {
        if(Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(i.getAction())) {
            boolean on=i.getBooleanExtra("state",false);
            Toast.makeText(c,on?"Airplane Mode turned ON":"Airplane Mode turned OFF",Toast.LENGTH_LONG).show();
        }
    }
}
