QT 安卓动态获取权限
一:在AndroidManifest.xml文件中赋予相关权限
二:
package ckdz.Appproject;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import java.util.ArrayList;
import java.util.List;
import android.util.Log;
/**
* Created by long
*/
public class PermissionManager {
public final static int MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE = 1;
public final static int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 2;
public final static int MY_PERMISSIONS_REQUEST_CAMERA = 3;
public final static int MY_PERMISSIONS_RECORD_AUDIO = 4;
public final static int MY_PERMISSIONS_SYSTEM_ALERT_WINDOW = 5;
//log TAG
private String MYTAG = "XHLIVE";//MainActivity.xhlogtag;
//data
private static Context mContext;
private boolean mWritePermission = false; //写权限
private boolean mReadPermission = false; //读权限
private boolean mCameraPermission = false; //摄像头权限
private boolean mRecordAudioPermission = false; //麦克风权限
private boolean mRecordSystemWindow = false; //悬浮窗
String[] permissions = new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.SYSTEM_ALERT_WINDOW
};
List<String> mPermissionList = new ArrayList<String>();
//检查所有权限(摄像头相关)
public void checkAllPermission() {
mPermissionList.clear();
//Log.d("GetPermission" , "the result mPermissionList is NUll "+mPermissionList.length );
for (int i = 0; i < permissions.length; i++) {
if (ContextCompat.checkSelfPermission(mContext, permissions[i]) != PackageManager.PERMISSION_GRANTED) {
mPermissionList.add(permissions[i]);
}
}
}
//获取所有权限(摄像头相关)
public void getAllPermission() {
if (mPermissionList.isEmpty()) {
//未授予的权限为空,表示都授予了
} else {
//请求权限方法
String[] permissions = mPermissionList.toArray(new String[mPermissionList.size()]);//将List转为数组
//Log.d("GetPermission" , "the result requestPermissions "+permissions.size());
ActivityCompat.requestPermissions((Activity) mContext, permissions, 1);
}
}
private static class SingletonHolder{
public static PermissionManager instance = new PermissionManager();
}
private PermissionManager(){}
public static PermissionManager getInstance(Context context){
mContext = context;
return SingletonHolder.instance;
}
//检查: 写 权限
public boolean checkWritePermission() {
int permission = ActivityCompat.checkSelfPermission(mContext,
Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
Log.e(MYTAG, "No, we do not have WRITE permission");
mWritePermission = false;
} else{
Log.e(MYTAG, "Yes, we have WRITE permission");
mWritePermission = true;
}
return mWritePermission;
}
//检查: 读 权限
public boolean checkReadPermission() {
int permission = ActivityCompat.checkSelfPermission(mContext,
Manifest.permission.READ_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
Log.e(MYTAG, "No, we do not have READ permission");
mReadPermission = false;
} else{
Log.e(MYTAG, "Yes, we have READ permission");
mReadPermission = true;
}
return mReadPermission;
}
//检查: 摄像头 权限
public boolean checkCameraPermission() {
int permission = ActivityCompat.checkSelfPermission(mContext,
Manifest.permission.CAMERA);
if (permission != PackageManager.PERMISSION_GRANTED) {
Log.e(MYTAG, "No, we do not have CAMERA permission");
mCameraPermission = false;
} else{
Log.e(MYTAG, "Yes, we have CAMERA permission");
mCameraPermission = true;
}
return mCameraPermission;
}
//检查 悬浮窗权限
public boolean checkWindowPermission() {
int permission = ActivityCompat.checkSelfPermission(mContext,
Manifest.permission.WRITE_EXTERNAL_STORAGE);
return mWritePermission;
}
//获取 存储 权限
public void getWritePermission() {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) mContext,
Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// Show an expanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions((Activity) mContext,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
//获取 读 权限
public void getReadPermission() {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) mContext,
Manifest.permission.READ_EXTERNAL_STORAGE)) {
// Show an expanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions((Activity) mContext,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
//获取 摄像头 权限
public void getCameraPermission() {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) mContext,
Manifest.permission.CAMERA)) {
// Show an expanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions((Activity) mContext,
new String[]{Manifest.permission.CAMERA},
MY_PERMISSIONS_REQUEST_CAMERA);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
//获取悬浮窗 权限
public void getWindowPermission() {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) mContext,
Manifest.permission.SYSTEM_ALERT_WINDOW)) {
} else {
ActivityCompat.requestPermissions((Activity) mContext,
new String[]{Manifest.permission.SYSTEM_ALERT_WINDOW},
MY_PERMISSIONS_SYSTEM_ALERT_WINDOW);
}
}
public void setWritPermissionStatus(boolean status) {
mWritePermission = status;
}
public void setReadPermissionStatus(boolean status) {
mReadPermission = status;
}
public void setCameraPermissionStatus(boolean status) {
mCameraPermission = status;
}
public boolean isWritePermissionOK() {
return mWritePermission;
}
public boolean isReadPermissionOK() {
return mReadPermission;
}
public boolean isCameraPermissionOK() {
return mCameraPermission;
}
}
QT 安卓动态获取权限的更多相关文章
- Android6.0以上系统动态获取权限
动态权限的申请方法: 1.首先,需要在AndroidManifest.xml静态申请权限,否则无法动态申请权限: <uses-permission android:name="andr ...
- android 6.0之后动态获取权限
Android 6.0 动态权限申请 1. 概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予,运行时应用不再需要询问用户.在 Android 6.0 或更高版本对权限 ...
- Android6.0动态获取权限
Android6.0采用新的权限模型,只有在需要权限的时候,才告知用户是否授权,是在runtime时候授权,而不是在原来安装的时候 ,同时默认情况下每次在运行时打开页面时候,需要先检查是否有所需要的权 ...
- Android动态获取权限
android权限的变化 在Android6.0以前的版本的时候,Android的权限都是在安装的时候全部的配置完成的.然而这往往会造成一些安全的问题. Google的解决办法: 将Android中的 ...
- QT 安卓 悬浮窗权限动态申请
一:申请方式: String ACTION_MANAGE_OVERLAY_PERMISSION = "android.settings.action.MANAGE_OVERLAY_PERMI ...
- Android 6.0以上动态获取权限
首先在清单文件中注册 然后在MainActivity.java中将权限封装到一个String数组中 static final String[] PERMISSION = new String[]{ M ...
- 动态获取Android权限
@TargetApi(23)private void showPhotoDialog() { if (dialog != null && dialog.isShowing()) { d ...
- Spring Security3实现,权限动态获取
Spring Security3实现,权限动态获取 原文 http://blog.csdn.net/yangwei19680827/article/details/9359113 主题 网络安全Sp ...
- Android6.0动态申请权限那些坑--以及避免用户选择不再提示后无法获取权限的问题
Android 6.0 为了保护用户隐私,将一些权限的申请放在了应用运行的时候去申请, 比如以往的开发中,开发人员只需要将需要的权限在清单文件中配置即可,安装后用户可以在设置中的应用信息中看到:XX应 ...
随机推荐
- [Mybatis]执行一句Sql返回一个List<String>
在Mapper.xml如下书写SQL文,其中 resultType告知MyBatis返回的类型: <select id="selectExpiredDate" resultT ...
- kotlin之类构造器
Kotlin中类允许定义个主构造器和多个第二构造器. 主构造器就是类头的一部分,紧跟在类名的后面,构造器参数是可选的 package loaderman import loaderman.bar.Pe ...
- 使用Selenium时解决方案: Exception: Failed to find firefox binary. You can set it by specifying the ······
问题描述: Firefox在自动升级之后,在使用selenium的时候出现了如下错误: Exception: Failed to find firefox binary. You can set it ...
- JVM学习笔记之JDK、JRE、JVM的关系(二)
JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库.Java Runtime Enviro ...
- Mysql安装遇到问题的解决
- 资深技术Leader曹乐:如何成为技术大牛
From: https://mp.weixin.qq.com/s/QaBTm_9AJC01Isr3LLR3aw 原创: 曹乐 公众号: 再成长一次 看了下面这篇文章的话,应该会有收获. 虽然排版不好, ...
- STS中依赖项的设置
经过试验,把依赖项总结一下,可能会不断修改. 1. 父依赖项(固定) <parent> <groupId>org.springframework.boot</groupI ...
- 【HTML】常用的标签学习(2)
现在的使用的html语言都是h5,但是h5也是从h4继承发展来的,所以h4的标签我们也要学习,然后加上h5新增的标签,那么html这门语言才算学习完毕.上次学习了h4的一些常用标签,今天学习h4剩下的 ...
- 构建LNMP平台
1方案 安装部署Nginx.MariaDB.PHP环境 安装部署Nginx.MariaDB.PHP.PHP-FPM: 启动Nginx.MariaDB.FPM服务: LNMP(Linux.Nginx.M ...
- 安装keystone
在控制节点上执行 controllerHost='controller' MYSQL_PASSWD='m4r!adbOP' RABBIT_PASSWD='0penstackRMQ' ADMIN_PAS ...