Android 6.0.1 couldn't enable wifi hotspot programmatically

前端 未结 5 1747
孤城傲影
孤城傲影 2021-02-09 02:20

When I tried to enable wifi tethering from the following code it throws the exception

java.lang.reflect.InvocationTargetException at java.lang.reflect.Method

相关标签:
5条回答
  • 2021-02-09 02:45

    Permission is not your problem. You need something like this code :

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if (!Settings.System.canWrite(getApplicationContext())) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + getPackageName()));
        startActivityForResult(intent, 200); //You need a callback for activity result so that check if user enabled this feature, go for starting hotspot (google for it)
    } else {
        // Do your stuff about starting hotspot (in network thread)
    }
    

    }

    0 讨论(0)
  • 2021-02-09 03:02

    Guys I tried everything and I wasn't able to start the hotspot in Android 6.0. You can just check if Api is >= 23, and if so just take the user to settings page to create hotspot by himself.

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        final Intent intent = new Intent(Intent.ACTION_MAIN, null);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        final ComponentName cn = new ComponentName(
                       "com.android.settings",
                       "com.android.settings.TetherSettings");
        intent.setComponent(cn);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity( intent);
    }else{
       createhotSpot();
    }
    
    0 讨论(0)
  • 2021-02-09 03:05

    Set target SDK version 21 and ask for write_settings permission in your activity. Also add android.permission.WRITE_SETTINGS permission in manifest.

    if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                    Manifest.permission.WRITE_SETTINGS)){
    
    }else {
        ActivityCompat.requestPermissions(this,
                new String[]{Manifest.permission.WRITE_SETTINGS},
                121);
    }
    

    For more details please visit http://developer.android.com/training/permissions/requesting.html

    0 讨论(0)
  • 2021-02-09 03:07

    This is not the correct way.But this fixed the issue.

    Changed the target sdk version to 21. Then hotspot will start programmatically even in android 6.0.1. Think there should be a proper way to do this for android 6 and later versions. I think requesting runtime permissions needs to execute those kind of processess. This talks about the android permission requesting in runtime

    0 讨论(0)
  • 2021-02-09 03:08

    I think Android M don't support to create hotspot programmatically . You can take your Marshmallow user to settings page to create hotspot by himself. below code will help yo to go setting page.

      startActivity(
        new Intent(Settings.ACTION_SETTINGS));
    
    0 讨论(0)
提交回复
热议问题