Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android में मोबाइल डेटा कैसे डिसेबल करें?

प्रोग्रामेटिक रूप से मोबाइल डेटा चालू/बंद करने का प्रयास - लेकिन गैर-रूटेड डिवाइस पर प्रतिबंधों के कारण यह काम नहीं करता।

⚠️ महत्वपूर्ण सीमाएं

  • Android 5.0+ (API 21+): setMobileDataEnabled() रिफ्लेक्शन के माध्यम से भी कॉल नहीं किया जा सकता
  • Android 2.1-4.4: रिफ्लेक्शन के माध्यम से काम करता था (रूटेड फोन पर)
  • MODIFY_PHONE_STATE अनुमति केवल सिस्टम/हस्ताक्षरित ऐप्स को दी जाती है
  • निष्कर्ष: सामान्य ऐप्स मोबाइल डेटा प्रोग्रामेटिक रूप से नियंत्रित नहीं कर सकते

कोड उदाहरण (केवल संदर्भ के लिए - काम नहीं करेगा)

चरण 1: लेआउट

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:padding="16dp"
    tools:context=".MainActivity">
    <Switch
        android:id="@+id/switchData"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Mobile Data" />
</LinearLayout>

चरण 2: रिफ्लेक्शन प्रयास

src/MainActivity.java:

import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.CompoundButton;
import android.widget.Switch;
import java.lang.reflect.Method;
import java.util.Objects;

public class MainActivity extends AppCompatActivity {
    Switch mySwitch;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mySwitch = findViewById(R.id.switchData);
        mySwitch.setChecked(getMobileDataState());
        mySwitch.setOnCheckedChangeListener((buttonView, isChecked) -> setMobileDataState(isChecked));
    }

    public void setMobileDataState(boolean enabled) {
        try {
            TelephonyManager telephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
            Method method = Objects.requireNonNull(telephony).getClass()
                .getDeclaredMethod("setDataEnabled", boolean.class);
            method.invoke(telephony, enabled);
        } catch (Exception ex) {
            Log.e("MainActivity", "Error setting mobile data state", ex);
        }
    }

    public boolean getMobileDataState() {
        try {
            TelephonyManager telephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
            Method method = Objects.requireNonNull(telephony).getClass()
                .getDeclaredMethod("getDataEnabled");
            return (boolean) method.invoke(telephony);
        } catch (Exception ex) {
            Log.e("MainActivity", "Error getting mobile data state", ex);
        }
        return false;
    }
}

वैकल्पिक समाधान

  1. सेटिंग्स स्क्रीन खोलें: उपयोगकर्ता को मैन्युअली टॉगल करने दें
    startActivity(new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS));
    // या
    startActivity(new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS));
  2. Device Policy Controller (DPC): एंटरप्राइज़ ऐप्स के लिए DevicePolicyManager
  3. रूटेड डिवाइस: Shell कमांड svc data disable/enable (su आवश्यक)

सेटिंग्स खोलने का व्यावहारिक कोड

public void openMobileDataSettings() {
    Intent intent = new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    } else {
        // फॉलबैक
        startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
    }
}
  1. Android Data Binding मास्टर करें: सहज UI डेटा एकीकरण Android Data Binding मास्टर करें: सहज UI डेटा एकीकरण

    डेटा बाइंडिंग एक तकनीक है जिसका उपयोग तब किया जाता है जब आप सूचना के टुकड़ों (आपके डेटा) को कुछ विज़ुअल उपयोगकर्ता इनपुट तत्वों से जोड़ना चाहते हैं। इस प्रक्रिया में, जब भी इनपुट अपडेट होता है, तो उसके पीछे का डेटा भी अपडेट हो जाता है। यह कोई नई अवधारणा नहीं है, और ऐसे ढेर सारे फ्रेमवर्क हैं जिन्हें

  1. एंड्रॉइड पर ऑटोकरेक्ट कैसे बंद करें: स्टेप-बाय-स्टेप गाइड एंड्रॉइड पर ऑटोकरेक्ट कैसे बंद करें: स्टेप-बाय-स्टेप गाइड

    शीर्षक पढ़कर आप पूछेंगे कि एंड्रॉइड पर ऑटोकरेक्ट क्यों डिसेबल करें? आखिरकार, यह एंड्रॉइड डिवाइस पर टाइपिंग त्रुटियों की किसी भी संभावना को खत्म कर देता है, है ना? साथ ही, इसकी प्रणाली ऐसी है कि यह उन शब्दों को सीखता है जिनका आप बार-बार उपयोग करते हैं जैसे-जैसे आप उनका उपयोग करते हैं। फिर भी, ऐसे सम

  1. एंड्रॉइड मोबाइल डेटा समस्याओं को तुरंत ठीक करें एंड्रॉइड मोबाइल डेटा समस्याओं को तुरंत ठीक करें

    जब आपको अपना पहला स्मार्टफोन मिलता है, तो सेल्युलर डेटा या मोबाइल डेटा उन चीजों में से एक बन जाता है जो जीवन की आवश्यकता बन जाती है। यह केवल तब पता चलता है जब आप कनेक्टिविटी खो देते हैं कि आपको पता नहीं है कि Google Maps के बिना आप कहां जा रहे हैं, Flipboard के बिना क्या पढ़ना है, और WhatsApp के बिन