में हवाई जहाज मोड मैं एंड्रॉइड 4.2.2 के साथ नेक्सस 4 में हवाई जहाज मोड सेट करने की कोशिश कर रहा हूं। मुझे पता है कि यह संभव नहीं है क्योंकि AIRPLANE_MODE_ON को Global system settings पर ले जाया गया था और यह केवल एक पढ़ा गया विकल्प है।जेली बीन
क्या ऐसा कुछ करने का कोई और तरीका है, मेरा मतलब रेडियो को अक्षम करना है? मैं ब्लूटूथ, वाईफ़ाई और इंटरनेट कनेक्शन अक्षम कर सकता हूं, लेकिन फोन कॉल नेटवर्क अभी भी सक्रिय है।
NDK के साथ लाइब्रेरी बनाने के लिए संभवतः नेटवर्क को अक्षम करने के लिए संभव हो सकता है?
संपादित: मैं java.lang.reflect
इस विधि बनाने के साथ की कोशिश की है:
@SuppressLint("NewApi")
@SuppressWarnings("rawtypes")
private boolean putStringAirplaneMode() throws ClassNotFoundException,
NoSuchMethodException, IllegalArgumentException,
IllegalAccessException, InvocationTargetException {
ContentResolver resolver = context.getContentResolver();
String name = Settings.Global.AIRPLANE_MODE_ON;
String value = (isEnabled() ? "1" : "0");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Log.v("AirplaneBatterySaver",
"Using reflection to change airplane mode");
// For JELLY_BEAN_MR1 use reflection. TODO test if works reflection
Class SystemProperties = android.provider.Settings.Global.class;
Class[] parameterTypes = new Class[3];
parameterTypes[0] = ContentResolver.class;
parameterTypes[1] = String.class;
parameterTypes[2] = String.class;
@SuppressWarnings("unchecked")
Method method = SystemProperties.getMethod("putString",
parameterTypes);
method.setAccessible(true);
return (Boolean) method.invoke(new Object(), resolver, name, value);
// return Settings.Global.putString(resolver, name, value);
} else {
Log.v("AirplaneBatterySaver",
"Using Settings.System to change airplane mode");
return Settings.System.putString(resolver, name, value);
}
}
आप देख सकते हैं मैं JELLY_BEAN_MR1
से अधिक विधि Settings.System.putString(resolver, name, value);
की जगह लेकिन, ज़ाहिर है, मैं हो रही है एक SecurityException
क्योंकि मेरे एप्लिकेशन नहीं है एक सिस्टम ऐप
Caused by: java.lang.SecurityException: Permission denial: writing to secure
settings requires android.permission.WRITE_SECURE_SETTINGS
at android.os.Parcel.readException(Parcel.java:1425)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:185)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
at android.content.ContentProviderProxy.call(ContentProviderNative.java:574)
at android.provider.Settings$NameValueCache.putStringForUser(Settings.java:777)
at android.provider.Settings$Global.putStringForUser(Settings.java:5421)
at android.provider.Settings$Global.putString(Settings.java:5411)
अगर मैं <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
का उपयोग मैं त्रुटि Permission is only granted to system apps
मिल: यह पता लगाने है। मैं एसडीके स्रोतों (ट्रेस से फाइलों में) की जांच कर रहा था ताकि इस अनुमति के बिना हवाई जहाज मोड को सेट करने का कोई तरीका ढूंढ सके, लेकिन मुझे कोई सफलता नहीं मिली।
आपको इस प्रश्न का उत्तर पहले से ही इस साइट पर मिल जाएगा! "4.2 विमान मोड" के लिए खोज करने का प्रयास करें। असल में, यह सेटिंग 4.2 से इस सेटिंग को बदलने के लिए अब संभव नहीं है, जब तक कि आपके एप्लिकेशन में रूट न हो (जवाब भी है कि यह कैसे करना है)। – shadrx
आपके उत्तर के लिए धन्यवाद। मैं वास्तव में इस सेटिंग को बदलने के लिए नहीं देख रहा हूं (हवाई जहाज मोड), वैसे भी मैं स्टैक ओवरफ्लो में कड़ी मेहनत करता हूं। मैं कुछ अलग तरीके से ऐसा करने के लिए देख रहा हूं (यदि संभव हो)। मेरे ऐप के लिए रूट अनुमतियों का उपयोग एक विकल्प नहीं है। – Freefri