【发布时间】:2018-04-23 23:27:37
【问题描述】:
我必须显示多个权限,我的程序只显示第一个我不知道为什么,我希望你能帮助我
进口
import static android.Manifest.permission.CHANGE_CONFIGURATION;
import static android.Manifest.permission.MODIFY_AUDIO_SETTINGS;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
import static android.Manifest.permission.WRITE_SETTINGS;
主要
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Permis();
}
功能权限
private void Permis() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if ((checkSelfPermission(WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) &&
(checkSelfPermission(CHANGE_CONFIGURATION) == PackageManager.PERMISSION_GRANTED) &&
(checkSelfPermission(MODIFY_AUDIO_SETTINGS) == PackageManager.PERMISSION_GRANTED) &&
(checkSelfPermission(WRITE_SETTINGS) == PackageManager.PERMISSION_GRANTED)) {
Toast.makeText(tuneActivity.this, "Permiso concedido anteriormente", Toast.LENGTH_SHORT).show();
}
if ((shouldShowRequestPermissionRationale(WRITE_EXTERNAL_STORAGE))||
(shouldShowRequestPermissionRationale(CHANGE_CONFIGURATION)) ||
(shouldShowRequestPermissionRationale(MODIFY_AUDIO_SETTINGS)) ||
(shouldShowRequestPermissionRationale(WRITE_SETTINGS))) {
DialogoAlerta();
} else {
requestPermissions(new String[]{WRITE_EXTERNAL_STORAGE, CHANGE_CONFIGURATION, MODIFY_AUDIO_SETTINGS, WRITE_SETTINGS},
MY_PERMISSIONS_REQUEST);
}
}
}
功能对话框提示
private void DialogoAlerta() {
AlertDialog.Builder dialogo=new AlertDialog.Builder(tuneActivity.this);
dialogo.setTitle("Permisos desactivados");
dialogo.setMessage("Debe aceptar los permisos para poder definir un tono como ringtone o sonido de notificacion");
dialogo.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{WRITE_EXTERNAL_STORAGE, CHANGE_CONFIGURATION, MODIFY_AUDIO_SETTINGS, WRITE_SETTINGS},
MY_PERMISSIONS_REQUEST);
}
}
});
}
onRequestPermissionsResult
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode,permissions,grantResults);
switch (requestCode) {
case MY_PERMISSIONS_REQUEST: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] ==
PackageManager.PERMISSION_GRANTED && grantResults[1] ==
PackageManager.PERMISSION_GRANTED && grantResults[2] ==
PackageManager.PERMISSION_GRANTED && grantResults[3] ==
PackageManager.PERMISSION_GRANTED ) {
Toast.makeText (tuneActivity.this,"Permiso concedido",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText (tuneActivity.this,"Permiso no concedido",Toast.LENGTH_SHORT).show();
}
return;
}
}
}
所以.. 程序只是要求第一个权限'Write External Storage' 然后它显示'permiso no concedido' 但我不知道为什么,我希望你能解释我为什么,谢谢,对不起我的英语不好
【问题讨论】:
标签: java android android-studio permissions android-permissions