2012-08-16 20 views
11

क्या प्रोग्राम सेटिंग्स को प्रोग्रामेटिक रूप से एक्सेस करने का कोई तरीका है?प्रोग्राम सेटिंग्स को प्रोग्रामेटिक रूप से कैसे एक्सेस करें?

उदाहरण के लिए: सेटिंग> डेवलपर विकल्प> यूएसबी डिबगिंग> सही/गलत

अग्रिम धन्यवाद।

संपादित करें: यूएसबी डीबगिंग सिर्फ एक उदाहरण है। क्या मैं डिवाइस में सेटिंग्स में मौजूद प्रत्येक सेटिंग्स तक पहुंच सकता हूं।

+0

[इस पर एक नज़र डालें] (http://stackoverflow.com/q/3458275/940096) – Praveenkumar

+0

डायरेक्ट लिंक [यहां] है (https://groups.google.com/forum/#!topic/android -developers/lTxvDrD6m-0)। – ChuongPham

उत्तर

10

Settings.Secure.putInt(getActivity().getContentResolver(),Settings.Secure.ADB_ENABLED, 1);

लेकिन आपको ऐसा करने के लिए रूट पहुंच की आवश्यकता है। इस सभी ANR

Settings.Secure.putInt(ContentResolver,Settings.Secure.ANR_SHOW_BACKGROUND,0);

और के लिए दिखाने के लिए गतिविधियों

ActivityManagerNative.getDefault().setAlwaysFinish(true)

नहीं रहते हो की कोशिश करो, लेकिन ActivityManagerNative मानक एपीआई में छिपा हुआ है: केवल सिस्टम एप्लिकेशन सुरक्षित सेटिंग

संपादित परिवर्तित करने की अनुमति सेट। आपको orroid.jar प्राप्त करने के लिए या तो प्रतिबिंब या method का उपयोग करने की आवश्यकता होगी।

 int adb = Settings.Secure.getInt(context.getContentResolver(), 
    Settings.Secure.ADB_ENABLED, 0); 
 // toggle the USB debugging setting 
adb = adb == 0 ? 1 : 0; 
 Settings.Secure.putInt(context.getContentResolver(), 
Settings.Secure.ADB_ENABLED, adb); 

AndroidManifest.xml में: फिर मैं इस रूट पहुँच की आवश्यकता है

+0

धन्यवाद। यह कोड काम करता है लेकिन मैंने एक उदाहरण के रूप में यूएसबी डीबगिंग लिखा था। असली सवाल यह है कि कौन सी सेटिंग्स सुलभ हैं। क्या मैं "गतिविधियों को न रखें" या "सभी एएनआर दिखाएं" तक पहुंच सकता हूं? – auy

+0

संपादन की जांच करें। – nandeesh

+0

'सेटिंग्स.Secure.putInt (getActivity()। GetContentResolver(), सेटिंग्स.Secure.ADB_ENABLED, 1); 'एंड्रॉइड प्लेटफ़ॉर्म प्रमाणपत्र के साथ आपको अपने ऐप पर हस्ताक्षर करने की आवश्यकता के रूप में स्वयं ही काम नहीं करेगा, आपके ऐप में उचित है 'AndroidManifest.xml' में कॉन्फ़िगरेशन, और आपका ऐप'/system/app 'प्रोग्रामेटिक या मैन्युअल रूप से स्थापित है। आप इसे रूट डिवाइस से भी नहीं कर सकते हैं। – ChuongPham

3

के रूप में की कोशिश करो लगता है

<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission> 
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"></uses-permission> 

और अंत में इस उदाहरण पर नजर

http://code.google.com/p/secure-settings-widget/source/browse/src/com/lieryan/adbwidget/ADBAppWidgetProvider.java?r=eb23b2d6989ccade05f095806db5888f1ba62737

+1

उपर्युक्त अपने आप से काम नहीं करेगा क्योंकि आपको अपने ऐप को एंड्रॉइड प्लेटफ़ॉर्म प्रमाणपत्र के साथ साइन इन करने की आवश्यकता है, आपके ऐप में 'AndroidManifest.xml' में उपयुक्त कॉन्फ़िगरेशन हैं, और आपका ऐप'/system/app 'प्रोग्रामेटिक रूप से स्थापित है या मैन्युअल रूप से। – ChuongPham

0

आप जब तक यूएसबी डीबगिंग चालू नहीं हो सकता है आपका ऐप सिस्टम ऐप है।

0

कोड की यह पंक्ति में मदद कर सकते हैं:

Settings.Global.putInt(getContentResolver(), Global.ADB_ENABLED, 1); 

और यदि आप इस अनुमति की जरूरत है:

<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>

लेकिन प्रकट में इस अनुमति जोड़ने आपको यह त्रुटि मिल जाएगा के बाद: अनुमति केवल है सिस्टम ऐप्स को

जिसका अर्थ है आपका ऐप एक सिस्टम ऐप होना चाहिए।

3

मुझे पता है कि यह प्रश्न पुराना है लेकिन दिलचस्प है।

नंदेश का समाधान अच्छी तरह से काम करता है। लेकिन अगर आप यूएसबी डिबगिंग जैसी कुछ सेटिंग्स बदलना चाहते हैं तो यह काम नहीं करता है। आपको निम्नलिखित अनुमति का उपयोग करना होगा।

<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/> 

लेकिन, यह गैर सिस्टम ऐप्स के साथ काम नहीं करता है। हालांकि, यदि आपके पास रूट पहुंच है तो यह करने के लिए यह संभव है। आप this समाधान का प्रयास कर सकते हैं जहां लेखक एक ही चीज़ को हल करते हैं।

तुम भी https://github.com/alseambusher/adb-toggle

1

कोशिश कर सकते हैं आप अनुप्रयोग तो आप बस इस सक्षम करने के लिए/अक्षम USB डीबगिंग

Settings.Secure.putInt(getActivity().getContentResolver(),Settings.Secure.ADB_ENABLED, 1);

तुम भी ऐसा करने के लिए रूट पहुँच की आवश्यकता है सिस्टम एप्लिकेशन है। मेरे पास रूट डिवाइस है और मैं बस यूएसबी डिबगिंग को सक्षम/अक्षम करने के लिए SU निष्पादित करता हूं।

Process proc = Runtime.getRuntime().exec(new String [] { "su", "-c", "setprop", "persist.service.adb.enable", "0"});

proc.waitFor();

Process proc2 = Runtime.getRuntime().exec(new String [] { "su", "-c", "stop", "adbd"});

proc2.waitFor();

अच्छी बात आप (/ प्रणाली/priv एप्लिकेशन के अंतर्गत /) आपका सरल अनुप्रयोग अर्थात (/ डेटा/एप्लिकेशन) यह कर सकते हैं में अपने आवेदन जगह नहीं जरूरत करना है।

संबंधित मुद्दे

 संबंधित मुद्दे