Android 如何在棉花糖中一次向用户显示所有接受权限?
我在我的应用程序中有10个权限,我可以逐个提示。但我想10权限一次提示给用户,这样他就可以接受应用程序启动的权限Android 如何在棉花糖中一次向用户显示所有接受权限?,android,android-permissions,android-6.0-marshmallow,Android,Android Permissions,Android 6.0 Marshmallow,我在我的应用程序中有10个权限,我可以逐个提示。但我想10权限一次提示给用户,这样他就可以接受应用程序启动的权限 提前感谢我已经创建了一个运行时权限帮助器,它完全满足您的需要。 你可以在这里找到它- 添加此类并根据您的权限进行修改后。您可以在需要询问所有权限的活动中添加以下代码 runtimePermissionHelper = RuntimePermissionHelper.getInstance(this); if (runtimePermissionHelper.i
提前感谢我已经创建了一个运行时权限帮助器,它完全满足您的需要。 你可以在这里找到它- 添加此类并根据您的权限进行修改后。您可以在需要询问所有权限的活动中添加以下代码
runtimePermissionHelper = RuntimePermissionHelper.getInstance(this);
if (runtimePermissionHelper.isAllMCPermissionAvailable()) {
//All permissions available. Do what you want.
} else {
runtimePermissionHelper.setActivity(this);
runtimePermissionHelper.requestPermissionsIfDenied();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Map<String, Integer> perms = new HashMap<String, Integer>();
// Fill with results*/
for (int i = 0; i < permissions.length; i++)
perms.put(permissions[i], grantResults[i]);
boolean isAllPermissionsAllowed = false;
for(int i : grantResults){
if(i==PackageManager.PERMISSION_GRANTED){
isAllPermissionsAllowed = true;
}else{
isAllPermissionsAllowed = false;
break;
}
}
if(isAllPermissionsAllowed){
//All permissions available. Do what you want.
} else {
// Permission Denied. Show error page
Intent intent = new Intent(this,ErrorActivity.class);
intent.putExtra("permissions_denied",true);
startActivity(intent);
finish();
}
}
在同一活动中重写此方法,以便在用户接受/拒绝权限时获得回调
runtimePermissionHelper = RuntimePermissionHelper.getInstance(this);
if (runtimePermissionHelper.isAllMCPermissionAvailable()) {
//All permissions available. Do what you want.
} else {
runtimePermissionHelper.setActivity(this);
runtimePermissionHelper.requestPermissionsIfDenied();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Map<String, Integer> perms = new HashMap<String, Integer>();
// Fill with results*/
for (int i = 0; i < permissions.length; i++)
perms.put(permissions[i], grantResults[i]);
boolean isAllPermissionsAllowed = false;
for(int i : grantResults){
if(i==PackageManager.PERMISSION_GRANTED){
isAllPermissionsAllowed = true;
}else{
isAllPermissionsAllowed = false;
break;
}
}
if(isAllPermissionsAllowed){
//All permissions available. Do what you want.
} else {
// Permission Denied. Show error page
Intent intent = new Intent(this,ErrorActivity.class);
intent.putExtra("permissions_denied",true);
startActivity(intent);
finish();
}
}
@覆盖
public void onRequestPermissionsResult(int-requestCode,@NonNull-String[]permissions,@NonNull-int[]grantResults){
super.onRequestPermissionsResult(请求代码、权限、授权结果);
Map perms=new HashMap();
//满载而归*/
for(int i=0;i
我创建了一个运行时权限帮助器,它正好满足您的需要。
你可以在这里找到它-
添加此类并根据您的权限进行修改后。您可以在需要询问所有权限的活动中添加以下代码
runtimePermissionHelper = RuntimePermissionHelper.getInstance(this);
if (runtimePermissionHelper.isAllMCPermissionAvailable()) {
//All permissions available. Do what you want.
} else {
runtimePermissionHelper.setActivity(this);
runtimePermissionHelper.requestPermissionsIfDenied();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Map<String, Integer> perms = new HashMap<String, Integer>();
// Fill with results*/
for (int i = 0; i < permissions.length; i++)
perms.put(permissions[i], grantResults[i]);
boolean isAllPermissionsAllowed = false;
for(int i : grantResults){
if(i==PackageManager.PERMISSION_GRANTED){
isAllPermissionsAllowed = true;
}else{
isAllPermissionsAllowed = false;
break;
}
}
if(isAllPermissionsAllowed){
//All permissions available. Do what you want.
} else {
// Permission Denied. Show error page
Intent intent = new Intent(this,ErrorActivity.class);
intent.putExtra("permissions_denied",true);
startActivity(intent);
finish();
}
}
在同一活动中重写此方法,以便在用户接受/拒绝权限时获得回调
runtimePermissionHelper = RuntimePermissionHelper.getInstance(this);
if (runtimePermissionHelper.isAllMCPermissionAvailable()) {
//All permissions available. Do what you want.
} else {
runtimePermissionHelper.setActivity(this);
runtimePermissionHelper.requestPermissionsIfDenied();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Map<String, Integer> perms = new HashMap<String, Integer>();
// Fill with results*/
for (int i = 0; i < permissions.length; i++)
perms.put(permissions[i], grantResults[i]);
boolean isAllPermissionsAllowed = false;
for(int i : grantResults){
if(i==PackageManager.PERMISSION_GRANTED){
isAllPermissionsAllowed = true;
}else{
isAllPermissionsAllowed = false;
break;
}
}
if(isAllPermissionsAllowed){
//All permissions available. Do what you want.
} else {
// Permission Denied. Show error page
Intent intent = new Intent(this,ErrorActivity.class);
intent.putExtra("permissions_denied",true);
startActivity(intent);
finish();
}
}
@覆盖
public void onRequestPermissionsResult(int-requestCode,@NonNull-String[]permissions,@NonNull-int[]grantResults){
super.onRequestPermissionsResult(请求代码、权限、授权结果);
Map perms=new HashMap();
//满载而归*/
for(int i=0;i
requestPermissions
将字符串数组作为第一个参数,因此
requestPermissions(new String[]{Manifest.permission.X, Manifest.permission.Y}, requestCode);
但是
运行时权限的全部要点是,用户不需要授予它们,直到您的应用程序实际需要它们。
requestPermissions
将字符串数组作为第一个参数,因此
requestPermissions(new String[]{Manifest.permission.X, Manifest.permission.Y}, requestCode);
但是
运行时权限的全部要点是,用户不需要授予它们,直到您的应用程序真正需要它们。您可以通过以下方式同时请求多个权限:
(我现在是这样使用的) 然后我有一个函数:
void checkRuntimePermissions(){
if ((ActivityCompat.checkSelfPermission(this, Manifest.permission.X)
!= PackageManager.PERMISSION_GRANTED) && ActivityCompat.checkSelfPermission ...) {
//modify the array acc to permission granted or not
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.X) && ActivityCompat.shouldShowRequestPermissionRationale...{
ActivityCompat.requestPermissions(Activity.this, PERMISSIONS_ARRAY,
REQUEST_CODE_PERMISSIONS);
} ..}
并通过实现验证请求
我希望在调用requestPermissions…
时,o.s.会自动检查权限,这样我们就不必检查权限是否被允许
您可以通过以下方式同时请求多个权限:
(我现在是这样使用的) 然后我有一个函数:
void checkRuntimePermissions(){
if ((ActivityCompat.checkSelfPermission(this, Manifest.permission.X)
!= PackageManager.PERMISSION_GRANTED) && ActivityCompat.checkSelfPermission ...) {
//modify the array acc to permission granted or not
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.X) && ActivityCompat.shouldShowRequestPermissionRationale...{
ActivityCompat.requestPermissions(Activity.this, PERMISSIONS_ARRAY,
REQUEST_CODE_PERMISSIONS);
} ..}
并通过实现验证请求
我希望在调用requestPermissions…
时,o.s.会自动检查权限,这样我们就不必检查权限是否被允许
如果您谈论的是所有危险的权限,它将以10个“允许”或“拒绝”对话框的形式出现,这些对话框可以显示为“10中的1”、“10中的2”…在“允许”和“拒绝”行中左对齐。运行时权限的全部要点是,用户不需要授予它们,直到您的应用程序真正需要它们。如果你不想这样做,只需将你的targetSdk降低到22。我想访问四个权限联系人、位置、库、帐户。从未尝试过,但请看这篇文章:你还应该记住,该用户可以随时撤销权限。因此,即使您的应用程序在启动时被授予此权限,也不能保证它们在您尝试拍照或编写文件时被授予。如果您谈论的是所有危险的权限,它将以10个“允许”或“拒绝”对话框的形式出现,显示为“1/10”,“第2/10号决议“…写在allow和Denyth行的左边运行时权限的全部要点是用户不需要授予它们,直到您的应用程序实际需要它们。如果你不想这样做,只需将你的targetSdk降低到22。我想访问四个权限联系人、位置、库、帐户。从未尝试过,但请看这篇文章:你还应该记住,该用户可以随时撤销权限。因此,即使您的应用程序在启动时被授予此权限,也不能保证它们在您尝试拍照或编写文件时被授予。