Android请求权限回拨 [英] Android Request Permission Callback

查看:78
本文介绍了Android请求权限回拨的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图通过 https://developers.google.com/实现Android权限android / guides / permissions

几个问题:
1)回调函数onRequestPermissionResult - 其中的参数是String []权限和int [ ] grantResults从?
2)我一直为grantResults和String []权限获得空值
3)我已经将const REQUEST_LOCATION的值设置为0 - 这个const的值是多少?

  if(ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED){
//立即检查权限
ActivityCompat.requestPermissions(this,
new String [] {Manifest.permission.ACCESS_FINE_LOCATION},
REQUEST_LOCATION);
} else {
//已授予权限,照常继续
位置myLocation =
LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
}

一个不相关的问题...获取Google地图API密钥时需要设置SHA-1的值或者是可选的,只是将键限制在android中。



谢谢。

  public void onRequestPermissionsResult(int requestCode,
String [] permissions,
int [] grantResults)

解决方案

public class RequestUserPermission {

 私人活动活动; 


//存储权限
private static final int REQUEST_PERMISSION = 1;
private static String [] PERMISSIONS = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
};

public RequestUserPermission(Activity activity){
this.activity = activity;

$ b public boolean verifyStoragePermissions(){
//检查我们是否有写入权限
int permissionWrite = ActivityCompat.checkSelfPermission(activity,Manifest.permission.WRITE_EXTERNAL_STORAGE) ;
int permissionRead = ActivityCompat.checkSelfPermission(activity,Manifest.permission.READ_EXTERNAL_STORAGE); $(b)
$ b if((permissionWrite!= PackageManager.PERMISSION_GRANTED)||
(permissionRead!= PackageManager.PERMISSION_GRANTED)){
//我们没有权限,所以提示用户
ActivityCompat.requestPermissions(
activity,
PERMISSIONS,
REQUEST_PERMISSION
);
返回false;
} else {
return true;
}
}

public void providePermission(){
verifyStoragePermissions();

$ b public void forceFullOpenPermission(){
if(!verifyStoragePermissions()){
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts(package,activity.getPackageName(),null);
intent.setData(uri);
activity.startActivityForResult(intent,REQUEST_PERMISSION);


在您的活动

  RequestUserPermission requestUserPermission = new 
RequestUserPermission(DashBoard.this);
requestUserPermission.verifyStoragePermissions();

如果您想强制开放权限 b

  requestUserPermission.forceFullOpenPermission(); 


I'm trying to implement Android permissions from https://developers.google.com/android/guides/permissions

A couple of ques: 1) The callback onRequestPermissionResult - where are the parameters String[] permissions and int[]grantResults from? 2) I keep getting null values for grantResults and String[] permissions 3) I have set the value of the const REQUEST_LOCATION to 0 - does it matter what the value of this const is?

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
  // Check Permissions Now
  ActivityCompat.requestPermissions(this,
        new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
        REQUEST_LOCATION);
} else {
  // permission has been granted, continue as usual
  Location myLocation =
LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
}

One unrelated ques...when getting a google map API key is it required to set the SHA-1 value or is that optional and just limits the key to android.

Thanks.

public void onRequestPermissionsResult(int requestCode,
                                       String[] permissions,
                                       int[] grantResults) 

解决方案

public class RequestUserPermission {

private Activity activity;


// Storage Permissions
private static final int REQUEST_PERMISSION = 1;
private static String[] PERMISSIONS = {
        Manifest.permission.READ_EXTERNAL_STORAGE,
        Manifest.permission.WRITE_EXTERNAL_STORAGE,
};

public RequestUserPermission(Activity activity) {
    this.activity = activity;
}

public  boolean verifyStoragePermissions() {
    // Check if we have write permission
    int permissionWrite = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
    int permissionRead = ActivityCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE);

    if ((permissionWrite != PackageManager.PERMISSION_GRANTED) ||
            (permissionRead != PackageManager.PERMISSION_GRANTED)) {
        // We don't have permission so prompt the user
        ActivityCompat.requestPermissions(
                activity,
                PERMISSIONS,
                REQUEST_PERMISSION
        );
        return false;
    }else{
        return true;
    }
}

public void providePermission(){
    verifyStoragePermissions();
}

public void forceFullOpenPermission(){
    if(!verifyStoragePermissions()){
        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
        Uri uri = Uri.fromParts("package", activity.getPackageName(), null);
        intent.setData(uri);
        activity.startActivityForResult(intent, REQUEST_PERMISSION);
    }
}

In your Activity

RequestUserPermission requestUserPermission = new 
RequestUserPermission(DashBoard.this);
    requestUserPermission.verifyStoragePermissions();

If you want to forceful open permission

requestUserPermission.forceFullOpenPermission();

这篇关于Android请求权限回拨的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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