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应 ...
随机推荐
- python编码,三个编码实例
1.字符串编码设置 data = u'你好' utf8 = data.encode('utf-8') 2.管道编码设置 import locale import sys ###设置输出管道编码### ...
- OPERQUERY查询,关于效率,或者说正确用法
原文:https://blog.csdn.net/u013641136/article/details/50379596 做过一个项目,需要在SQLSERVER创建对ORACLE的DBLINK然后通过 ...
- Java中AWT、Swing与SWT三大GUI技术的原理与效率差异
Java中AWT.Swing与SWT三大GUI技术的原理与效率差异 转 https://blog.csdn.net/weixin_37703598/article/details/81843810 ...
- jeecg中列表点击单号跳入链接
效果如图:点击单号,跳到一个新的页面 1.首先列表给一个自定义的js: <t:dgCol title="业务编号" field="orderCode" ...
- java常用的正则表达式的工具类
import com.google.common.base.Strings; import java.util.regex.Matcher;import java.util.regex.Pattern ...
- RabbitMQ学习之:(三)第一个RMQ的程序 (转贴+我的评论)
RabbitMQ for Windows: Building Your First Application Posted by Derek Greer on March 7, 2012 This is ...
- 【C# in depth 第三版】温故而知新(1) (转)
声明 本文欢迎转载,原文地址:http://www.cnblogs.com/DjlNet/p/7192354.html 前言 关于这本书(<深入理解C# 第三版>)的详细情况以及好坏,自行 ...
- 时间复杂度O(n)
时间复杂度 算法分析 同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率.算法分析的目的在于选择合适算法和改进算法.一个算法的评价主要从时间复杂度和空间复杂度来考虑. 一.时间复 ...
- elasticsearch的keyword与text的区别
es2.*用户可忽略该文章.es 2.*版本里面是没有这两个字段!!! 当初接触es,最惊讶就是他的版本速度发布太快,这次主要讨论keyword与text的区别 在es 2.*版本里面是没有这两个字段 ...
- C学习笔记-数组
数组的概念 数组是一组具有相同数据类型的变量集合,这里要注意两点,数组只能存储相同的数据类型和数组的内存是连续的,这位数组和指针的联系奠定了基础. 一维数组 定义及初始化 一维数组指的是只有一个下标的 ...