是否仅要求Android Marshmallow的运行时权限? [英] Ask for runtime permission only for Android Marshmallow?

查看:97
本文介绍了是否仅要求Android Marshmallow的运行时权限?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只想为棉花糖添加运行时权限,因为它会使我的应用程序在Android棉花糖设备中崩溃,否则它将正常工作.是否可以一次添加多个权限?我已经为相机许可编写了代码,但是

I want to add run time permission only for marshmallow because it crashes my application in Android marshmallow devices otherwise its working properly. Is it possible to add multiple permissions at a single time? I have written code for camera permission, but

我已经为单一权限编写了代码,并且工作正常.

I have written code for single permission and that is working fine.

private  void  requestpermissioncamera()
{
final List<String> permissionsList = new ArrayList<String>();
if (!addPermission(permissionsList, Manifest.permission.ACCESS_FINE_CAMERA)) permissionsNeeded.add("Camera");
requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),PERMISSION_REQUEST_CODE);
return;
}

此功能用于检查天气许可是否被授予.

this function is used to check weather permission is granted or not.

private boolean checkPermission(){
int result = ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA);
if (result == PackageManager.PERMISSION_GRANTED){
return true;
} else {
return false;
}
}

推荐答案

很容易一次性获得多个权限.

It is easy to get multiple permissions at a single shot.

我希望下面的代码可以帮助您授予多个权限.

I hope below code can help you out for granting multiple permissions.

private  void  requestpermissioncamera()
{
    List<String> permissionsNeeded = new ArrayList<String>();

    final List<String> permissionsList = new ArrayList<String>();
    if (!addPermission(permissionsList, Manifest.permission.ACCESS_FINE_LOCATION))
permissionsNeeded.add("GPS");
    if (!addPermission(permissionsList, Manifest.permission.READ_CONTACTS))
permissionsNeeded.add("Read Contacts");
    if (!addPermission(permissionsList, Manifest.permission.WRITE_CONTACTS))
permissionsNeeded.add("Write Contacts");
    if(!addPermission(permissionsList,Manifest.permission.CAMERA))
permissionsNeeded.add("Camera");
    if(!addPermission(permissionsList, Manifest.permission.ACCESS_NOTIFICATION_POLICY))
permissionsNeeded.add("push Notification");

    if (permissionsList.size() > 0) {
        if (permissionsNeeded.size() > 0) {
        // Need Rationale
        String message = "You need to grant access to " + permissionsNeeded.get(0);
        for (int i = 1; i < permissionsNeeded.size(); i++)
        message = message + ", " + permissionsNeeded.get(i);
        showMessageOKCancel(message,new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
               requestPermissions(permissionsList.toArray(new String[permissionsList.size()]), REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
                    }
                });
           return;
      }
      requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
      return;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    switch (requestCode) {
    case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS:
    {
    Map<String, Integer> perms = new HashMap<String, Integer>();
    // Initial
    perms.put(Manifest.permission.ACCESS_FINE_LOCATION, PackageManager.PERMISSION_GRANTED);
    perms.put(Manifest.permission.READ_CONTACTS, PackageManager.PERMISSION_GRANTED);
    perms.put(Manifest.permission.WRITE_CONTACTS, PackageManager.PERMISSION_GRANTED);
    perms.put(Manifest.permission.CAMERA, PackageManager.PERMISSION_GRANTED);
    perms.put(Manifest.permission.ACCESS_NOTIFICATION_POLICY, PackageManager.PERMISSION_GRANTED);

    // Fill with results
    for (int i = 0; i < permissions.length; i++)
        perms.put(permissions[i], grantResults[i]);
    // Check for ACCESS_FINE_LOCATION
    if (perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && perms.get(Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED && perms.get(Manifest.permission.WRITE_CONTACTS) == PackageManager.PERMISSION_GRANTED) 
    {
    // All Permissions Granted
    //    insertDummyContact();
    } else {
    // Permission Denied
    Toast.makeText(MainActivity.this, "Some Permission is Denied", Toast.LENGTH_SHORT)
    .show();
    }
    }
    break;
    default:
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

这篇关于是否仅要求Android Marshmallow的运行时权限?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆