博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态权限
阅读量:6908 次
发布时间:2019-06-27

本文共 5702 字,大约阅读时间需要 19 分钟。

  hot3.png

import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.net.Uri;import android.os.Build;import android.provider.Settings;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.util.Log;import java.util.ArrayList;import java.util.List;/** * ----------------------------------------------------------------- * Copyright (C) 2014-2016, by your company, All rights reserved. * ----------------------------------------------------------------- * File: PermissionActivity.java * Author: win7 * Version: V100R001C01 * Create: 2019/3/7 10:48 * Changes (from 2019/3/7) * ----------------------------------------------------------------- * 2019/3/7 : Create PermissionActivity.java (win7); * ----------------------------------------------------------------- */public class PermissionActivity extends Activity{    private String TAG="PermissionActivity";    private int REQUEST_CODE_PERMISSION = 0x00099;    /**     * 请求权限     *     * @param permissions 请求的权限     * @param requestCode 请求权限的请求码     */    public void requestPermission(String[] permissions, int requestCode) {        this.REQUEST_CODE_PERMISSION = requestCode;        if (checkPermissions(permissions)) {            permissionSuccess(REQUEST_CODE_PERMISSION);        } else {            List
needPermissions = getDeniedPermissions(permissions); ActivityCompat.requestPermissions(this, needPermissions.toArray(new String[needPermissions.size()]), REQUEST_CODE_PERMISSION); } } /** * 检测所有的权限是否都已授权 * * @param permissions * @return */ private boolean checkPermissions(String[] permissions) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { return true; } for (String permission : permissions) { if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) { return false; } } return true; } /** * 获取权限集中需要申请权限的列表 * * @param permissions * @return */ private List
getDeniedPermissions(String[] permissions) { List
needRequestPermissionList = new ArrayList<>(); for (String permission : permissions) { if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED || ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) { needRequestPermissionList.add(permission); } } return needRequestPermissionList; } /** * 系统请求权限回调 * * @param requestCode * @param permissions * @param grantResults */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_CODE_PERMISSION) { if (verifyPermissions(grantResults)) { permissionSuccess(REQUEST_CODE_PERMISSION); } else { permissionFail(REQUEST_CODE_PERMISSION); showTipsDialog(); } } } /** * 确认所有的权限是否都已授权 * * @param grantResults * @return */ private boolean verifyPermissions(int[] grantResults) { for (int grantResult : grantResults) { if (grantResult != PackageManager.PERMISSION_GRANTED) { return false; } } return true; } /** * 显示提示对话框 */ private void showTipsDialog() { new AlertDialog.Builder(this) .setTitle("提示信息") .setMessage("当前应用缺少必要权限,该功能暂时无法使用。如若需要,请单击【确定】按钮前往设置中心进行权限授权。") .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { startAppSettings(); } }).show(); } /** * 启动当前应用设置页面 */ private void startAppSettings() { Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + getPackageName())); startActivity(intent); } /** * 获取权限成功 * * @param requestCode */ public void permissionSuccess(int requestCode) { Log.d(TAG, "获取权限成功=" + requestCode); } /** * 权限获取失败 * @param requestCode */ public void permissionFail(int requestCode) { Log.d(TAG, "获取权限失败=" + requestCode); } public String Version(){ String versionName; int versionCode=1; try { PackageInfo pi= getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(), 0); versionName= pi.versionName; versionCode=pi.versionCode; } catch (PackageManager.NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); versionName= "1.0.1"; } String s="v"+versionName+"/"+versionCode; return s; } private Activity getActivity(){ return this; }}

 

转载于:https://my.oschina.net/wfy94/blog/2967335

你可能感兴趣的文章
instruction set汇总
查看>>
借助语义技术构建 Wikipedia 查询表单
查看>>
12.5日个人工作总结
查看>>
抽屉之Tornado实战(9)--装饰器实现用户登录状态验证
查看>>
Android Menu菜单的编写及事件响应
查看>>
Vue+elementUI创建“回到顶部”组件
查看>>
网页模板生产器
查看>>
Qt中的QString和QStringList常用方法
查看>>
设计模式之适配器模式
查看>>
HTML5 中的 canvas 画布(一)
查看>>
1042. 字符统计(20)
查看>>
CentOS 7系统初始化
查看>>
socket 编程 : shutdown vs close
查看>>
从网络获取图片示例
查看>>
【转】手机测试入行三年的感想
查看>>
Post-Build Event command line
查看>>
LeetCode:Edit Distance
查看>>
xpath NOT IE
查看>>
爬取校园新闻首页的新闻
查看>>
JavaEE中Web服务器、Web容器、Application服务器区别及联系
查看>>