turn off airplane mode in Android

扶醉桌前 提交于 2019-12-05 18:32:42

You most likely did not add WRITE_SETTING permissions to your AndroidManifest.xml:

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

Also note that code:

 Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
 intent.putExtra("state", !isEnabled);
 sendBroadcast(intent);

Is not supposed to work, because according to documentation on ACTION_AIRPLANE_MODE_CHANGED:

This is a protected intent that can only be sent by the system.

And even though you can currently send this broadcast without System permissions, it may change in future releases of Android.

Jan

Make sure to have set permissions for toggling airplane mode in your android manifest.

Take a look here Toggle airplane mode in Android

Refer following code:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    IntentFilter intentFilter = new IntentFilter("android.intent.action.SERVICE_STATE");

    BroadcastReceiver receiver = new BroadcastReceiver() {
          @Override
          public void onReceive(Context context, Intent intent) {
                Log.d("AirplaneMode", "Service state changed");
                Toast.makeText(getApplicationContext(), "Service state changed", Toast.LENGTH_LONG).show();
                boolean isEnabled = isAirplaneModeOn(context);
            /*   setSettings(context, isEnabled?1:0);
                Intent intent_mode = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
               intent_mode.putExtra("state", !isEnabled);
                context.sendBroadcast(intent_mode);*/

                if(isEnabled==true)
                { setSettings(context, isEnabled?1:0);
                    Toast.makeText(getApplicationContext(), "Flight mode on", Toast.LENGTH_LONG).show();
                    Settings.System.putInt(getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0);
                    Intent newIntent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
                    newIntent.putExtra("state", false);
                    sendBroadcast(newIntent);
                }
                else
                { setSettings(context, isEnabled?1:0);
                    Toast.makeText(getApplicationContext(), "Flight mode off", Toast.LENGTH_LONG).show();
                }

          }

        @SuppressLint("NewApi")
        private void setSettings(Context context, int value) {
            // TODO Auto-generated method stub

            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
                Settings.System.putInt(
                          context.getContentResolver(),
                          Settings.System.AIRPLANE_MODE_ON, value);
            } else {
                Settings.Global.putInt(
                          context.getContentResolver(),
                          Settings.Global.AIRPLANE_MODE_ON, value);
            }       

        }

        @SuppressLint("NewApi")
        public boolean isAirplaneModeOn(Context context) {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
            return Settings.System.getInt(context.getContentResolver(), 
                    Settings.System.AIRPLANE_MODE_ON, 0) != 0;          
        } else {
            return Settings.Global.getInt(context.getContentResolver(), 
                    Settings.Global.AIRPLANE_MODE_ON, 0) != 0;
        }       
    }
    };

    registerReceiver(receiver, intentFilter);


}

//permissions needed:

// //

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!