Android 安卓飞机许可不';无法正常工作-完整示例?
Android 安卓飞机许可不';无法正常工作-完整示例?,android,permissions,android-permissions,airplane,Android,Permissions,Android Permissions,Airplane,我在这里找到了很多例子,但没有人适合我……我不明白怎么回事。我需要的是在我的应用程序中输入“飞行模式”,然后搜索完整的例子。 我所做的是 1.在清单中请求权限(我看到我需要“写入设置”权限) 2.在代码中,当我想更改飞行模式时,我会检查权限 private void setAirplaneMode() { boolean permission; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { pe
我在这里找到了很多例子,但没有人适合我……我不明白怎么回事。
我需要的是在我的应用程序中输入“飞行模式”,然后搜索完整的例子。
我所做的是
1.在清单中请求权限(我看到我需要“写入设置”权限)
2.在代码中,当我想更改飞行模式时,我会检查权限
private void setAirplaneMode() {
boolean permission;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
permission = Settings.System.canWrite(this);
} else {
permission = ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_SETTINGS) == PackageManager.PERMISSION_GRANTED;
}
if (permission) {
//here I go to activate the airplane mode
setAirplaneModeIntent(true);
} else {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, android.Manifest.permission.WRITE_SETTINGS)) {
//I need to explain why I want permission
//TODO
} else {
ActivityCompat.requestPermissions(this, new String[] android.Manifest.permission.WRITE_SETTINGS}, MY_PERMISSION_REQUEST_WRITE_SETTINGS);
}
}
3.我覆盖“onRequestPermissionsResult”
4.在“SetAirPlaneModeContent”中,我设置了飞行模式
private void setAirplaneModeIntent(boolean activateAirplaneMode) {
Settings.System.putInt(getContentResolver(), Settings.System.AIRPLANE_MODE_ON,
activateAirplaneMode ? 1 : 0);
Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", activateAirplaneMode);
sendBroadcast(intent);
}
调试时,我会输入“ActivityCompat.requestPermissions”代码,但当我到达“onRequestPermissionsResult”时,结果不会被授予PackageManager.PERMISSION。
发生了什么?
编辑
我解决了“请求权限”部分。对于“写入设置”权限,您需要执行“管理写入设置”操作。
请参见此处:
无论如何,当我发送广播时,第4点出现了一个错误。
如果我不发送广播,“Settings.System.putInt”命令似乎什么也不做。
有人能帮我吗?
编辑2
我投降。我发现唯一有效的解决方案是以这种方式打开网络设置
Intent intentAirplaneMode = new Intent(Settings.ACTION_AIRPLANE_MODE_SETTINGS);
intentAirplaneMode.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intentAirplaneMode);
简言之,谷歌登录是否被飞机模式阻止?唯一的方法是要求用户启用此模式?
Intent intentAirplaneMode = new Intent(Settings.ACTION_AIRPLANE_MODE_SETTINGS);
intentAirplaneMode.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intentAirplaneMode);