Android6.0软件崩溃问题

2023-10-26

概述

targetSdkVersion是23,在Android 6.0上运行就会遇到crash的问题,因为Android 6.0在原有的AndroidManifest.xml声明权限的基础上,增加了运行时的权限(无法在AndroidManifest.xml中声明),包括:
- 身体传感器
- 日历
- 摄像头
- 通讯录
- 地理位置
- 麦克风
- 电话
- 短信
- 存储空间

官网权限图:

代码

  • 判断与函数调用
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
                    String[] permissions = checkSelfPermissionArray(Login.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION,
                            Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE
                    });
                    if(permissions.length > 0) {
                        ActivityCompat.requestPermissions(Login.this, permissions, 1);
                    }
                }
  • 函数定义
@TargetApi(Build.VERSION_CODES.M)
private static boolean checkSelfPermissionWrapper(Object cxt, String permission) {
        if (cxt instanceof Activity) {
            Activity activity = (Activity) cxt;
            return ActivityCompat.checkSelfPermission(activity,
                    permission) == PackageManager.PERMISSION_GRANTED;
        } else if (cxt instanceof Fragment) {
            Fragment fragment = (Fragment) cxt;
            return fragment.getActivity().checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED;
        } else {
            throw new RuntimeException("cxt is net a activity or fragment");
        }
    }

//批量申请权限
private static String[] checkSelfPermissionArray(Object cxt, String[] permission) {
        ArrayList<String> permiList = new ArrayList<>();
        for (String p : permission) {
            if (!checkSelfPermissionWrapper(cxt, p)) {
                permiList.add(p);
            }
        }
        if (permiList.size() > 0) {
            return permiList.toArray(new String[permiList.size()]);
        }else {
            return new String[]{};
        }
    }
  • 处理返回情况
@Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch (requestCode){
            case 1:
                if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    //...
                }
                break;
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android6.0软件崩溃问题 的相关文章

  • 如何让Android设备始终处于唤醒模式?

    设备root成功后 现在 我需要使设备始终处于唤醒状态 即始终可见 UI 并且没有黑屏或任何白日梦屏幕 为此 我认为我必须完成以下任务 无锁屏 已关闭 睡眠设置为 从不 白日梦设置为 关闭 我发现都是关于应用程序层的 即有一些应用程序可以完
  • 通知中的 showInputMethodPicker 在 Android 9 中不起作用

    我的应用程序有时会显示一条通知 以简化切换到应用程序的内部输入法的过程 因此 我正在执行 InputMethodManager getSystemService INPUT METHOD SERVICE showInputMethodPic
  • Android SyncAdapter 回调

    我已经按照 SDK 中的 SimpleSyncAdapter 示例项目的思路实现了 SyncAdapter AccountManager 和私有 ContentProvider 一切都运转良好 现在 当从远程服务器下载了设置了特定标志的新行
  • 如何使自定义对话框透明?

    我需要使我的自定义对话框透明 我怎样才能做到这一点 您还可以在构造函数中使用以下行 getWindow setBackgroundDrawable new ColorDrawable 0
  • Firebase 存储 URL 不断随着新令牌的变化而变化

    我正在尝试使用 firebase 数据库和存储构建社交媒体应用程序 以下是预期的流程 用户上传个人资料图片 该图片存储在当前用户文件夹中的 Firebase 存储中 并且 URL 存储在 Firebase 数据库中以便快速访问 工作正常 用
  • RecyclerView 滚动不适用于 NestedScrollView

    我有一个布局 其中有一个 NestedScrollView 其中包含一个图像 多个按钮和一个 RecycleView 当我说recyclerView smoothScrollToPosition or recyclerView scroll
  • Facebook SDK 只适用于 Activity 吗?

    我一直在尝试将 Facebook SDK 实现到我的应用程序中 以便让用户通过该应用程序在我们的粉丝墙上发布消息 但是 我什至无法通过 SDK 登录用户 在 SDK 示例中 给出了一个简单的示例 该示例使用Activity尝试使用单点登录授
  • Android - 打开 FB 本机应用程序时未找到处理 Intent 的 Activity

    我正在尝试从通知中收到的网址打开特定帖子上的 FB 应用程序 它在大多数设备上都能完美运行 但在三星 S7 上大多会崩溃 我的简单代码 String url fb post
  • java.io.IOException:无法打开同步连接!进入 Nexus [重复]

    这个问题在这里已经有答案了 我尝试在 Eclipse 上运行我的应用程序 但发现了这些错误 这是第一次遇到 所以请给我关于这些错误的任何想法 我目前使用的是 Nexus 手机 2011 08 04 15 59 09 App Android
  • 在android API 23中获取用户的位置

    我可以编写获取用户位置的代码 并且在 API 更多细节 我手动启用设备的 GPS 第一次运行应用程序请求权限并且没有日志返回 在下次运行应用程序时 返回我准备好的 Toast 检查您的提供商 这是我写的代码 public class Mai
  • 在 Android 上获取一个滚动到 GridView 底部视图的按钮

    我正在尝试将现有的 iPhone 应用程序移植到 Android 我希望有一个按钮滚动到 GridView 底部的视图中 以使用户能够从服务器加载更多数据 目前 我的解决方案只是修复屏幕底部的一个按钮 而不是让它滚动到视图中 这是我的布局代
  • android形状xml旋转可绘制以编程方式改变颜色

    这是三角形的 xml
  • 蓝牙权限在 jetpack compose 中无法正常工作

    我在用com google accompanist accompanist permissions 0 25 1在我的项目中 我正在尝试在运行时请求蓝牙权限 我想知道用户如何知道权限被永久禁用 清单 xml
  • 未从线程接收位置数据

    我尝试使用计时器经常发送包含用户位置的短信 最初 我遇到了空指针异常 这是由于我犯了一个简单的错误 一旦解决了这个问题 一切似乎都运行良好 但是 它永远不会获取我的位置 因此 不断发送的文本显示 无法接收位置 我想问的是为什么它无法获取我的
  • Android - 框架布局高度与协调器布局不匹配

    我的 FrameLayout 抽屉布局中的容器 有问题 FrameLayout的高度超过了屏幕高度 在底部的android默认菜单按钮下方
  • 在React Native中在Android真实设备上运行应用程序时console.log输出在哪里

    我目前正在做一个项目 在那个项目中 我正在打印控制台日志但没有消息在任何地方打印 我在用npm 和 React native cli在真正的 Android 设备上运行 Thanks 如果您使用模拟器 可以按 Cmd M Android 或
  • 无法在 Windows 7 上安装 Android USB 驱动程序

    所以我想使用我的新 Nexus 5 来调试我的应用程序 我尝试通过以下方式安装 Android USB 驱动程序装置经理 http developer android com tools extras oem usb html Win7但我
  • Android:非键盘输入法

    我正在尝试为 Android 创建一个不是传统键盘 对应于不同字母的按键行 的 IME 并且我无法找到有关如何执行此操作的有用资源 因为 SDK 中的所有代码示例都使用键盘 API它是内置函数 我在 XML 文件中设计了 IME 界面 就好
  • 如何更改区域设置以使用拉丁塞尔维亚语(而不是西里尔塞尔维亚语)

    塞尔维亚语有拉丁字母和西里尔字母 在 Android 的日期和时间选择器小部件中 显示的塞尔维亚语言区域字母似乎是西里尔字母 如此处所示 我想更改区域设置 以便 Android 小部件使用拉丁塞尔维亚字母 当前的语言 国家代码 产生西里尔字
  • 使用 Android 地图 v2 进行自由绘图

    我有一个地图应用程序 使用新的 v2 Google Maps API for Android 我想做的是允许用户在地图上沿着手指的路径画一条线 我知道我可能需要一个按钮来启用 禁用此功能 因为它显然需要禁用平移 缩放控件 一旦用户画了线 我

随机推荐

  • Python脚本报错AttributeError: ‘module’ object has no attribute’get’解决方法

    发现代码都没有错 后来是改成这样 def pprint name var get print name var StringVar Label root text 姓名 font 微软雅黑 20 grid inputStr1 Entry r
  • RabbitMQ消息队列(转)

    转自 https www jianshu com p 79ca08116d57 关于消息队列 从前年开始断断续续看了些资料 想写很久了 但一直没腾出空 近来分别碰到几个朋友聊这块的技术选型 是时候把这块的知识整理记录一下了 市面上的消息队列
  • darknet-yolov4编译

    在个人win10上运行darknet yolov4 准备 电脑msi显卡 gtx1050ti 4g 驱动451以上 内存金士顿8g 必须项准备 先安装vs2017 必须勾选c 再cuda 我装了cuda10 0和9 2 上移环境变量 使10
  • 高级数据库总结

    总结 一 总结笔记 首先是我们会用到的几张数据表 1 学习数据库的必要性 时代迎来大数据时代 数据量的庞大已经不足以用人力来计算 为此我们需要一个软件或者一套流程来解决这个问题 那么数据库肯定是最佳选择 学点东西总是好的 2 Mysql数据
  • Netty:option和childOption参数设置说明

    转载 http www jianshu com p 0bff7c020af2 Channel配置参数 1 通用参数 CONNECT TIMEOUT MILLIS Netty参数 连接超时毫秒数 默认值30000毫秒即30秒 MAX MESS
  • [Android][设置最小(大)宽高]

    1 简介 TextView里定义的方法 据说是设置文本区域的宽高 android maxWidth 关联方法 setMaxWidth int 属性说明 设置文本区域的最大宽度 android maxHeight 关联方法 setMaxHei
  • Linux下获取ip、mac、子网掩码、广播地址信息

    get interface c include
  • 随机数算法,SQL

    SELECT FROM prizes config WHERE weight gt SELECT FLOOR RAND MAX weight FROM prizes config order by weight asc LIMIT 1 记录
  • RPM 软件包使用常见问题

    1 如何安装rpm软件包 rmp软件包的安装可以使用程序rpm来完成 执行下面的命令 rpm i your package rpm 其中your package rpm是你要安装的rpm包的文件名 一般置于当前目录下 安装过程中可能出现下面
  • SpringBoot配置文件敏感信息加密-jasypt

    使用过SpringBoot配置文件的朋友都知道 资源文件中的内容通常情况下是明文显示 安全性就比较低一些 打开application properties或application yml 比如mysql登陆密码 redis登陆密码以及第三方
  • Unity-角色互动加分显示的实现

    文章目录 角色互动加分显示的实现 在角色的脚本里设置分数 布置页面以及编译对应的脚本 使用事件委托将两者连接 角色互动加分显示的实现 思路 在角色的脚本里对应该加分的地方用变量统计分数 同时再创建一个ui对象 然后用委派事件获取角色的得分
  • [paper] Hourglass

    Stacked Hourglass Networks for Human Pose Estimation Abstract Hourglass Net是一个进行人体位姿估计的卷积神经网络 也可以用在人脸关键点检测等领域 它结合了身体上的空间
  • WChar_t 字符集的操作函数

    函数介绍 wcslen 类似与char 类型作参数的strlen 函数 用来获取wchar t 变量的长度 不包含终结符 wcscpy 类似与char 类型作参数的strcpy 函数 用来进行wchar t 变量之间的复制 同样的还有 wc
  • Qt应用开发(基础篇)——布局管理 Layout Management

    一 前言 在实际项目开发中 经常需要使用到布局 让控件自动排列 不仅节省控件还易于管控 Qt布局系统提供了一种简单而强大的方式来自动布局小部件中的子小部件 以确保它们充分利用可用空间 所有QWidget子类都可以使用setLayout 设置
  • JavaScript面向对象详解

    声明 本人的所有博客皆为个人笔记 作为个人知识索引使用 因此在叙述上存在逻辑不通顺 跨度大等问题 希望理解 分享出来仅供大家学习翻阅 若有错误希望指出 感谢 面向对象 JavaScript中没有类的概念 我们可以把对象看作散列表 无非就是一
  • html中的checkbox不显示值,html checkbox的checked属性问题和value属性问题

    lt html xmlns http www w3 org 1999 xhtml gt lt head gt lt script type text JavaScript gt function onbutton document getE
  • 前端Img使用图片跨域问题是怎么引起的?该如何解决呢?

    在项目种遇到一个问题 图片在dom节点这种使用了 img 标签来加载可以正常显示 但是运用到style中没有经过标签的加载就会出现跨域的问题 怎么会引起这个问题呢 1 通过 img 加载的图片 浏览器默认情况下会将其缓存起来 2 当我们从
  • 为什么数据分析进行的预测不够成功

    行业专家有时感叹大规模分析和数据科学计划经常缺乏价值 虽然人们从许多努力中看到了其巨大的价值 但结果非常差的例子也屡见不鲜 专家认为 通常这些问题可以归结为一个基本的错误 也就是说 认为生成预测 预测或模拟就足够了 但事实却不是这样 预测是
  • go 打开文件句柄_Go中trace包的使用

    Go给我们提供了一个工具trace 可以在运行时启用trace 并获得程序执行情况的详细视图 应该怎么使用trace呢 一般有下面三种使用方式 运行go test的时候 带上 trace参数标记 go test trace trace ou
  • Android6.0软件崩溃问题

    概述 targetSdkVersion是23 在Android 6 0上运行就会遇到crash的问题 因为Android 6 0在原有的AndroidManifest xml声明权限的基础上 增加了运行时的权限 无法在AndroidMani