高德地图android 权限,android 6.0 权限分配问题 高德地图 位置权限

import java.util.ArrayList;

import java.util.List;

import android.Manifest;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.content.Intent;

import android.content.pm.PackageManager;

import android.net.Uri;

import android.provider.Settings;

import android.support.v4.app.ActivityCompat;

import android.support.v4.content.ContextCompat;

import android.view.KeyEvent;

/**

* 继承了Activity,实现Android6.0的运行时权限检测

* 需要进行运行时权限检测的Activity可以继承这个类

*/

public class CheckPermissionsActivity extends Activity

implements

ActivityCompat.OnRequestPermissionsResultCallback {

/**

* 需要进行检测的权限数组

*/

protected String[] needPermissions = {

Manifest.permission.ACCESS_COARSE_LOCATION,

Manifest.permission.ACCESS_FINE_LOCATION,

Manifest.permission.WRITE_EXTERNAL_STORAGE,

Manifest.permission.READ_EXTERNAL_STORAGE,

Manifest.permission.READ_PHONE_STATE

};

private static final int PERMISSON_REQUESTCODE = 0;

/**

* 判断是否需要检测,防止不停的弹框

*/

private boolean isNeedCheck = true;

@Override

protected void onResume() {

super.onResume();

if(isNeedCheck){

checkPermissions(needPermissions);

}

}

/**

*

* @param

* @since 2.5.0

*

*/

private void checkPermissions(String... permissions) {

List needRequestPermissonList = findDeniedPermissions(permissions);

if (null != needRequestPermissonList

&& needRequestPermissonList.size() > 0) {

ActivityCompat.requestPermissions(this,

needRequestPermissonList.toArray(

new String[needRequestPermissonList.size()]),

PERMISSON_REQUESTCODE);

}

}

/**

* 获取权限集中需要申请权限的列表

*

* @param permissions

* @return

* @since 2.5.0

*

*/

private List findDeniedPermissions(String[] permissions) {

List needRequestPermissonList = new ArrayList();

for (String perm : permissions) {

if (ContextCompat.checkSelfPermission(this,

perm) != PackageManager.PERMISSION_GRANTED

|| ActivityCompat.shouldShowRequestPermissionRationale(

this, perm)) {

needRequestPermissonList.add(perm);

}

}

return needRequestPermissonList;

}

/**

* 检测是否说有的权限都已经授权

* @param grantResults

* @return

* @since 2.5.0

*

*/

private boolean verifyPermissions(int[] grantResults) {

for (int result : grantResults) {

if (result != PackageManager.PERMISSION_GRANTED) {

return false;

}

}

return true;

}

@Override

public void onRequestPermissionsResult(int requestCode,

String[] permissions, int[] paramArrayOfInt) {

if (requestCode == PERMISSON_REQUESTCODE) {

if (!verifyPermissions(paramArrayOfInt)) {

showMissingPermissionDialog();

isNeedCheck = false;

}

}

}

/**

* 显示提示信息

*

* @since 2.5.0

*

*/

private void showMissingPermissionDialog() {

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle(R.string.notifyTitle);

builder.setMessage(R.string.notifyMsg);

// 拒绝, 退出应用

builder.setNegativeButton(R.string.cancel,

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

finish();

}

});

builder.setPositiveButton(R.string.setting,

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

startAppSettings();

}

});

builder.setCancelable(false);

builder.show();

}

/**

* 启动应用的设置

*

* @since 2.5.0

*

*/

private void startAppSettings() {

Intent intent = new Intent(

Settings.ACTION_APPLICATION_DETAILS_SETTINGS);

intent.setData(Uri.parse("package:" + getPackageName()));

startActivity(intent);

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if(keyCode == KeyEvent.KEYCODE_BACK){

this.finish();

return true;

}

return super.onKeyDown(keyCode, event);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值