Android 非ROOT手機 apk 獲取更改設置開關(guān)權(quán)限,比如打開usb調(diào)試

參考鏈接:

https://greenify.uservoice.com/knowledgebase/articles/749142-how-to-grant-permissions-required-by-some-features
https://stackoverflow.com/questions/5034160/how-can-i-get-the-dreaded-write-secure-settings-permission-for-my-android-app

Android獲取USB調(diào)試狀態(tài)

獲取很簡單,適用于API 17+

      //檢查USB調(diào)試狀態(tài)
    public static boolean checkUSBDebug(){
        if(Settings.Global.getInt( Context.getContentResolver(), Settings.Global.ADB_ENABLED, 0) == 1) {
           return true;
        } else {
           return false;
        }
    }

Android打開USB調(diào)試開關(guān)

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

需要添加權(quán)限,但是這權(quán)限僅系統(tǒng)應用有權(quán)限申請:

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

這里有個取巧的辦法能獲取權(quán)限,安裝apk后:adb shell執(zhí)行命令:

adb -d shell pm grant pkgname android.permission.WRITE_SECURE_SETTINGS

這樣就能實現(xiàn)當USB調(diào)試開關(guān)關(guān)掉之后,apk自動判斷并且去打開了

Android打開開發(fā)者選項開關(guān)

Settings.Global.putInt(Context.getContentResolver(), Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);

Android獲取手機是否靜音,如果否,則設置靜音

    //判斷手機是否處于靜音狀態(tài),如果非靜音則設置靜音
    public static void checkAudio(Context context){
        AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);

        switch (am.getRingerMode()) {
            case AudioManager.RINGER_MODE_SILENT:
                Log.i(TAG,"Silent mode");
                break;
            case AudioManager.RINGER_MODE_VIBRATE:
                Log.i(TAG,"Vibrate mode");
                am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                break;
            case AudioManager.RINGER_MODE_NORMAL:
                Log.i(TAG,"Normal mode");
                am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                break;
        }
    }

Android獲取手機wifi狀態(tài),如果關(guān)閉,則打開

    //判斷手機wifi是否掉線,如果掉線則強制重連
    public static boolean  checkWifiState(Context context){
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
        if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
            return true;
        }
        //打開wifi
        WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
        wifiManager.setWifiEnabled(true);
        return false;
    }

需要申請權(quán)限:

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,733評論 25 709
  • 沙盤游戲療法案例寫作的方法和格式: 一、一般資料 人口學資料、個人成長史、精神狀態(tài)、身體狀態(tài)、社會功能、心理測驗結(jié)...
    念念不忘潤澤萬物閱讀 1,342評論 0 0
  • 作家其實并非什么高深莫測的職業(yè),村上春樹以及其他很多優(yōu)秀的作家都是直接的表現(xiàn)。當我們認真的對待它,并按照前輩們給予...
    老解閱讀 369評論 2 5
  • 飯吃著不好吃了,可以丟掉,吃得沒有味道了,可以丟掉,人生過的沒有味道的時候你能丟掉嗎?不能所以,我們要啥呀?我們要...
    清心閣閱讀 159評論 0 0
  • 已經(jīng)懷疑人生了!第一道C++改錯題,我就很無奈,找了半天連蒙帶猜寫了3,4個錯誤,當時想算了,往后可能題會友好點(...
    大俠一點紅閱讀 333評論 1 1

友情鏈接更多精彩內(nèi)容