एंड्रॉइड में एयरप्लेन मोड स्थिति जांचें और परिवर्तन सुनें
यह ट्यूटोरियल दिखाता है कि BroadcastReceiver का उपयोग करके कैसे जांचा जाए कि डिवाइस एयरप्लेन मोड में है या नहीं, और मोड परिवर्तन पर कैसे प्रतिक्रिया दें।
चरण 1: प्रोजेक्ट बनाएं
एंड्रॉइड स्टूडियो में नया प्रोजेक्ट बनाएं।
चरण 2: लेआउट (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="24dp"
tools:context=".MainActivity">
<TextView
android:id="@+id/statusText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="28sp"
android:textStyle="bold"
android:padding="24dp"
android:background="#E3F2FD"
android:text="एयरप्लेन मोड स्थिति..."/>
</LinearLayout>
चरण 3: एक्टिविटी कोड (src/MainActivity.java)
package com.example.airplanemodecheck;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.widget.TextView;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private TextView statusText;
private AirplaneModeReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
statusText = findViewById(R.id.statusText);
receiver = new AirplaneModeReceiver();
// वर्तमान स्थिति जांचें
checkAirplaneMode();
}
@Override
protected void onResume() {
super.onResume();
// एयरप्लेन मोड परिवर्तन के लिए रिसीवर रजिस्टर करें
IntentFilter filter = new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED);
registerReceiver(receiver, filter);
}
@Override
protected void onPause() {
super.onPause();
// लीक रोकने के लिए अनरजिस्टर करें
unregisterReceiver(receiver);
}
private void checkAirplaneMode() {
// Settings.Global से एयरप्लेन मोड स्थिति पढ़ें (API 17+)
boolean isAirplaneModeOn = false;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
isAirplaneModeOn = Settings.Global.getInt(
getContentResolver(),
Settings.Global.AIRPLANE_MODE_ON, 0) != 0;
} else {
// लीगेसी (API < 17)
isAirplaneModeOn = Settings.System.getInt(
getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) != 0;
}
updateUI(isAirplaneModeOn);
}
private void updateUI(boolean isOn) {
String message = isOn
? "✈️ एयरप्लेन मोड: चालू (ON)"
: "📱 एयरप्लेन मोड: बंद (OFF)";
statusText.setText(message);
statusText.setTextColor(isOn ? 0xFFF44336 : 0xFF4CAF50);
statusText.setBackgroundColor(isOn ? 0xFFFFEBEE : 0xFFE8F5E9);
}
// ब्रॉडकास्ट रिसीवर - एयरप्लेन मोड परिवर्तन पर कॉल होता है
private class AirplaneModeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(intent.getAction())) {
boolean isOn = intent.getBooleanExtra("state", false);
updateUI(isOn);
}
}
}
}
महत्वपूर्ण बिंदु
- Intent.ACTION_AIRPLANE_MODE_CHANGED - सिस्टम ब्रॉडकास्ट जब एयरप्लेन मोड टॉगल होता है
- Settings.Global.AIRPLANE_MODE_ON - वर्तमान स्थिति पढ़ने के लिए (API 17+)
- रनटाइम रजिस्ट्रेशन: मैनिफेस्ट में डिक्लेयर नहीं किया जा सकता (Android 8+ प्रतिबंध)
- लाइफसाइकिल:
onResumeमें रजिस्टर,onPauseमें अनरजिस्टर करें
एयरप्लेन मोड प्रोग्रामेटिकली बदलना (केवल सिस्टम ऐप्स)
केवल
android.permission.WRITE_SECURE_SETTINGS वाले सिस्टम/हस्ताक्षरित ऐप्स कर सकते हैं।
// केवल सिस्टम ऐप्स के लिए (रूट/ADB के माध्यम से काम कर सकता है)
Settings.Global.putInt(contentResolver, Settings.Global.AIRPLANE_MODE_ON, 1); // चालू
Settings.Global.putInt(contentResolver, Settings.Global.AIRPLANE_MODE_ON, 0); // बंद
// ब्रॉडकास्ट भेजें ताकि सिस्टम अपडेट हो
sendBroadcast(new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED).putExtra("state", true));
उपयोगकर्ता को सेटिंग्स पर भेजना (अनुशंसित)
// एयरप्लेन मोड सेटिंग्स पेज खोलें Intent intent = new Intent(Settings.ACTION_AIRPLANE_MODE_SETTINGS); startActivity(intent); // या वायरलेस सेटिंग्स Intent intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS); startActivity(intent);
एयरप्लेन मोड में क्या अक्षम होता है
- सेलुलर नेटवर्क (कॉल, SMS, मोबाइल डेटा)
- Wi-Fi (वैकल्पिक रूप से बाद में पुनः सक्षम किया जा सकता है)
- ब्लूटूथ (वैकल्पिक रूप से बाद में पुनः सक्षम किया जा सकता है)
- NFC
- GPS (कुछ डिवाइसेज पर)
चरण 4: टेस्ट करें
- ऐप चलाएं - वर्तमान स्थिति दिखाएगा
- क्विक सेटिंग्स से एयरप्लेन मोड टॉगल करें
- ऐप पर वापस आएं - स्थिति ऑटोमेटिकली अपडेट होगी
- लॉगकैट में "एयरप्लेन मोड परिवर्तित" देखें
