2012-08-16 11 views
11

デバイス設定にプログラムでアクセスする方法はありますか?例についてはデバイス設定にプログラムでアクセスするにはどうすればよいですか?

:[設定]> [開発者向けオプション> USBデバッグ>事前に真/偽

感謝。

編集:USBデバッグは単なる例です。デバイスの[設定]にあるすべての設定にアクセスできますか。

+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は標準APIに隠されているためを表示するためにこれを試してみてください:唯一のシステムアプリケーションは、安全な設定に

編集を変更する権限を持っていますセット。反射を行うか、このmethodを使用してandroid.jarを取得する必要があります。 AndroidManifest.xmlで

 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); 

: は再び私は、これはのように試してみてください

+0

ありがとうございます。このコードは動作しますが、例としてUSBデバッグを書いています。実際の質問は、どの設定にアクセスできるかです。 「活動を続けないでください」または「すべてのANRを表示する」にもアクセスできますか? – auy

+0

編集を確認します。 – nandeesh

+0

Androidプラットフォームの証明書でアプリに署名する必要がある場合、 'Settings.Secure.putInt(getActivity()。getContentResolver()、Settings.Secure.ADB_EN​​ABLED、1);'は単独では機能しません。 configは 'AndroidManifest.xml'にあり、あなたのアプリは'/system/app'にプログラム的にまたは手動でインストールされます。根っこのデバイスでもこれを行うことはできません。 – ChuongPham

3

rootアクセスを必要と推測

<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

あなたはAndroidプラットフォーム証明書でアプリケーションに署名する必要があり、あなたのアプリケーションは 'AndroidManifest.xml'に適切な設定を持ち、あなたのアプリケーションはプログラムで'/system/app'にインストールされているか、手動で – ChuongPham

0

ますUSBデバッグをオンにすることはできません。あなたのアプリはシステムアプリです。

0

このコード行を助けるかもしれない:

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

を、あなたはこの権限が必要です。

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

をが、マニフェストにこの権限を追加した後にこのエラーが表示されます:許可のみですシステムアプリに付与

つまり、あなたのアプリはシステムアプリでなければなりません。

3

私はこの質問は古いことを知っていますが面白いです。

Nandeeshのソリューションはうまくいきます。しかし、USBデバッグなどの特定の設定を変更したい場合は、動作しません。次のアクセス許可を使用する必要があります。

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

ただし、非システムアプリでは機能しません。しかし、あなたがルートアクセスを持っているなら、これを行う可能性があります。あなたは全く同じことを解決するthis解決策を試すことができます。

また、あなたのアプリがシステムアプリであれば、あなたは単にあなたもこれを行うにはroot権限が必要無効USBデバッグに/

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

を有効にするには、この操作を行うhttps://github.com/alseambusher/adb-toggle

1

を試すことができます。 私はデバイスをルートしており、Usbデバッグを有効/無効にするには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-アプリ/) あなたのシンプルなアプリすなわち(/データ/アプリ)はこれを行うことができます。

関連する問題