Android 非ROOT手机 apk 获取更改设置开关权限,比如打开usb调试

参考链接:

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调试状态

获取很简单,适用于API 17+

      //检查USB调试状态
    public static boolean checkUSBDebug(){
        if(Settings.Global.getInt( Context.getContentResolver(), Settings.Global.ADB_ENABLED, 0) == 1) {
           return true;
        } else {
           return false;
        }
    }

Android打开USB调试开关

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

需要添加权限,但是这权限仅系统应用有权限申请:

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

这里有个取巧的办法能获取权限,安装apk后:adb shell执行命令:

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

这样就能实现当USB调试开关关掉之后,apk自动判断并且去打开了

Android打开开发者选项开关

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

Android获取手机是否静音,如果否,则设置静音

    //判断手机是否处于静音状态,如果非静音则设置静音
    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状态,如果关闭,则打开

    //判断手机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;
    }

需要申请权限:

    <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" />
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,679评论 25 708
  • 沙盘游戏疗法案例写作的方法和格式: 一、一般资料 人口学资料、个人成长史、精神状态、身体状态、社会功能、心理测验结...
    念念不忘润泽万物阅读 1,160评论 0 0
  • 作家其实并非什么高深莫测的职业,村上春树以及其他很多优秀的作家都是直接的表现。当我们认真的对待它,并按照前辈们给予...
    老解阅读 314评论 2 5
  • 饭吃着不好吃了,可以丢掉,吃得没有味道了,可以丢掉,人生过的没有味道的时候你能丢掉吗?不能所以,我们要啥呀?我们要...
    清心阁阅读 145评论 0 0
  • 已经怀疑人生了!第一道C++改错题,我就很无奈,找了半天连蒙带猜写了3,4个错误,当时想算了,往后可能题会友好点(...
    大侠一点红阅读 309评论 1 1