java.lang.SecurityException:权限拒绝:写入设置需要android.Permission.WRITE\u设置

java.lang.SecurityException:权限拒绝:写入设置需要android.Permission.WRITE\u设置,java,android,Java,Android,这是我在5.0.0平台上构建airplan模式开/关的代码 下面是我的Activity.java源代码,请建议我需要在manifeat.xml中进行哪些更改才能访问权限 package com.rjil.airplanemodeonoff; import android.content.Intent; import android.os.Build; import android.provider.Settings; import android.support.v7.app.AppCompa

这是我在5.0.0平台上构建airplan模式开/关的代码 下面是我的Activity.java源代码,请建议我需要在manifeat.xml中进行哪些更改才能访问权限

package com.rjil.airplanemodeonoff;

import android.content.Intent;
import android.os.Build;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {
    // constants
    static final String STATUS_ON = "Airplane Mode: ON";
    static final String STATUS_OFF = "Airplane Mode: OFF";

    static final String TURN_ON = "Turn ON";
    static final String TURN_OFF = "Turn OFF";

    // controls
    TextView TVAirplaneMode;
    ToggleButton tBAirplane;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // load controls
        TVAirplaneMode = (TextView)findViewById(R.id.TVAirplaneMode);
        tBAirplane = (ToggleButton)findViewById(R.id.tBAirplane);
        // update UI at first time loading
        updateUI(isAirplaneMode());
        // set click event for button
        tBAirplane.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // check current state first
                boolean state = isAirplaneMode();
                // toggle the state
                if (state) toggleAirplaneMode(0, state);
                else toggleAirplaneMode(1, state);
                // update UI to new state
                updateUI(!state);
            }
        });
    }
    public void toggleAirplaneMode(int value, boolean state) {
        // toggle airplane mode
        //check the version
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { //if less than verson 4.2
            Settings.System.putInt(
                    getContentResolver(),
                    Settings.System.AIRPLANE_MODE_ON, value);
        } else {
            Settings.Global.putInt(
                    getContentResolver(),
                    Settings.Global.AIRPLANE_MODE_ON, value);
        }
        // broadcast an intent to inform
        Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
        intent.putExtra("state", !state);
        sendBroadcast(intent);
    }

    public void updateUI(boolean state) {
        //set text according to state
        if(state) {
            TVAirplaneMode.setText(STATUS_ON);
            tBAirplane.setText(TURN_OFF);
        } else {
            TVAirplaneMode.setText(STATUS_OFF);
            tBAirplane.setText(TURN_ON);
        }
    }


    public boolean isAirplaneMode() {
        //check the version
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {//if less than verson 4.2
            return Settings.System.getInt(getContentResolver(),
                    Settings.System.AIRPLANE_MODE_ON, 0) != 0;
        } else {
            return Settings.Global.getInt(getContentResolver(),
                    Settings.Global.AIRPLANE_MODE_ON, 0) != 0;

        }
    }



}
package com.rjil.airplanemodeonoff;
导入android.content.Intent;
导入android.os.Build;
导入android.provider.Settings;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.TextView;
导入android.widget.ToggleButton;
公共类MainActivity扩展了AppCompatActivity{
//常数
静态最终字符串状态_ON=“飞机模式:开”;
静态最终字符串状态\u OFF=“飞机模式:关闭”;
静态最终字符串打开\ u ON=“打开”;
静态最终字符串关闭\u OFF=“关闭”;
//控制
文本视图TVAirplaneMode;
切换按钮;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//负载控制
TVAirplaneMode=(TextView)findViewById(R.id.TVAirplaneMode);
TBPlanet=(切换按钮)findViewById(R.id.TBPlanet);
//第一次加载时更新UI
updateUI(isAirplaneMode());
//设置按钮的单击事件
TBAirline.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//首先检查当前状态
布尔状态=isAirplaneMode();
//切换状态
如果(状态)切换到GLEAIRPLANEMODE(0,状态);
else切换到IrPlaneMode(1,状态);
//将UI更新到新状态
更新(!state);
}
});
}
public void toggleAirplaneMode(int值,布尔状态){
//切换飞行模式
//检查版本
if(Build.VERSION.SDK_INT
写入安全设置不供第三方应用程序使用。无论您是在根版本还是生产版本上,系统/固件之外的任何应用程序都无法获得该权限


请检查答案

写入安全设置不供第三方应用程序使用。无论您是在根版本还是生产版本上,系统/固件之外的任何应用程序都无法获得该权限


请检查答案

您是否可以共享您的清单代码。
如果您进一步发现任何安全异常,它可能有助于查找您丢失的内容,并且您必须知道为什么我们需要在清单中保留权限声明。这是发生此类异常的另一种情况。请在此检查一次:您是否可以共享您的清单代码。
如果您进一步发现任何安全异常,它可能有助于查找您丢失的内容,并且您必须知道为什么我们需要在清单中保留权限声明。它们是发生此类异常的另一种情况,请在此检查一次: