请求 READ_SMS 权限后,包安装程序在 Android M 中崩溃

2023-12-08

我有一个尝试访问的登录片段(TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);这适用于 Lollipop 5.1 及以上版本的设备。当我在 Marshmallow 6.01 中尝试它时,它显示了安全异常。所以我添加了 android 文档中的代码来请求运行时的权限。这是代码

int permissionCheck = ContextCompat.checkSelfPermission(getActivity(),Manifest.permission.READ_SMS);
    if (permissionCheck != PackageManager.PERMISSION_GRANTED) {

        // Should we show an explanation?
        if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.READ_SMS)) {

            // 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(getActivity(),new String[]{Manifest.permission.READ_SMS},REQUEST_SMS);

            // REQUEST_SMS is an
            // app-defined int constant. The callback method gets the
            // result of the request.
        }
    }else {
        tMgr = (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);

    }

现在我的应用程序启动了,很快我的软件包安装程序就崩溃了。这是日志

03-23 12:12:13.618 8949-8949/com.android.packageinstaller E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.android.packageinstaller, PID: 8949
    Theme: themes:{default=overlay:system, iconPack:system, fontPkg:system, com.android.systemui=overlay:system}
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.packageinstaller/com.android.packageinstaller.permission.ui.GrantPermissionsActivity}: java.lang.NullPointerException: Attempt to get length of null array
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2450)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
        at android.app.ActivityThread.-wrap11(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5466)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: java.lang.NullPointerException: Attempt to get length of null array
        at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.computePermissionGrantState(GrantPermissionsActivity.java:293)
        at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.updateDefaultResults(GrantPermissionsActivity.java:343)
        at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.onCreate(GrantPermissionsActivity.java:100)
        at android.app.Activity.performCreate(Activity.java:6251)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520) 
        at android.app.ActivityThread.-wrap11(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5466) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我认为当应用程序尝试显示 UI 来请求权限时,程序包安装程序会崩溃。 我已经添加了<uses-permission android:name="android.permission.READ_SMS"/>在我的清单中


您已限制READ_SMS对 API 22 及以下版本的明显权限。

<uses-permission android:name="android.permission.READ_SMS" android:maxSdkVersion="22" />

正如我在评论中提到的,除了运行时请求之外,在 Marshmallow 及更高版本中仍然需要此清单权限。去除maxSdkVersion来自权限元素的属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

请求 READ_SMS 权限后,包安装程序在 Android M 中崩溃 的相关文章

随机推荐

  • AS3.0 重播整部电影(*SWF 文件)

    我用 Actionscript 3 0 和 flash 制作了一个小游戏 当玩家赢得游戏或 游戏结束 时 玩家应该可以选择重玩游戏 所以我的问题是 有没有办法用 Actionscript 重播整部电影 我知道 我可以将时间线重置回 0 并重
  • Struts2,无法使用 标记访问参数。想要在 标签中使用它

    我有一种情况需要将导航栏放在每个页面的顶部 因此 我决定在每个页面中包含一个新的 JSP 其中包含一个参数 指示用户所在的活动选项卡是什么 我的实现如下 仪表板 jsp
  • 如何将大型 gem 转换为独立的 Rails 应用程序

    我正在构建一个社交网络 并一直在使用 gem Community engine 但在实现我的应用程序所需的大量自定义时遇到了困难 我认为这将使我更容易覆盖和添加方法 并帮助我更好地理解和学习代码 因为我将能够实际看到所有代码的实际运行 到目
  • 使用 php 按单词或文本过滤 csv 文件

    我有另一个 csv 文件 我正在尝试做一个简单的单词过滤器 例如 我的 text csv 文件如下所示 name age hobbies Tom 8 football soccer baseball wii star wars books
  • 使用hugo框架向网页添加图像

    我想将图像发布到我的博客上 是的 就这么简单 我的网站托管在 GitLab Pages 上 并使用 Hugo 框架 v0 23 我从这里分叉了我的网页 https gitlab com pages hugo 因此我的博客文件夹结构是相同的
  • ReferenceError:未定义 FullCalendar

    我现在一直在尝试使用文档中提供的示例来实现 fullcalendar 当我尝试运行它时 我收到此错误 ReferenceError 未定义 FullCalendar 我知道这条消息的含义 但我必须在哪里以及如何定义它 document ad
  • Rails 3 和 HTML 5 微数据

    在 Rails 中 是否可以使用任何 ActionView Helpers 创建 HTML 5 无值属性 我正在尝试为 google 创建 HTML 5 itemprop 微数据面包屑 这是我想要生成的输出 div div 但你可以看到项目
  • 如何从 VSPackage 获取当前运行的 Visual Studio 安装路径

    我创建了一个VSPackage这应该将一些 XML 架构文件复制到 Visual Studio 的安装路径 VS install path Xml Schemas 我的机器上安装了多个 Visual Studio Visual Studio
  • 将纯 Swift 自定义框架导入到其他 Swift 项目中

    让我们 我有一个定制的 SwiftCocoa Touch framework MyLog 它有一个简单的函数 称为printLog 我有另一个 Swift 项目 名为HelloWorld在不同的工作空间 位置 现在我需要导入自定义框架MyL
  • 通过 ICodecAPI 为 H.264 IMFSinkWriter 编码器设置属性

    我试图通过检索 ICodecAPI 接口来调整通过 ActivateObject 创建的 H 264 编码器的属性 虽然我没有收到错误 但我的设置没有被考虑在内 代码在 Windows 10 下运行 我复制用于创建 IMFSinkWrite
  • MYSQL 截断了不正确的 DOUBLE 值

    当执行下面的 SQL 查询时 UPDATE shop category SET name Secolul XVI XVIII AND name eng 16th to 18th centuries WHERE category id 476
  • Apache 无法确定 docker 容器上的服务器名称

    我正在尝试为现有站点设置自定义的 Docker 容器 为此 我想提供我自己的定制vhost配置与ServerName 但是当我尝试添加自定义vhost configuration并重新启动 apache 我收到警告 Apache 无法确定全
  • Android 设备 GPS 以编程方式打开/关闭

    我正在使用以下代码来打开 关闭 GPS Enable GPS Intent intent new Intent android location GPS ENABLED CHANGE intent putExtra enabled true
  • 你能改进 F# 中的“代码行算法”吗?

    我编写了一个小脚本来迭代文件夹中的文件以计算代码行数 该脚本的核心是这个函数 用于计算空白 注释和代码的行数 请注意 目前它是针对 C 定制的 不支持多行注释 它对我来说看起来不太好 有人有更干净的版本吗 from list of stri
  • UTC 和 GMT 有什么区别?

    我对时区有一些疑问 可以单独以 UTC 捕获时间吗 UTC 6 和 GMT 6 是否相同 这是否意味着它是美国当地时间 比如说 我的 UTC 时间为 02 01 2018 00 03 这是否意味着我的美国当地时间是 01 01 2018 1
  • 抽象类可以代替接口吗? [复制]

    这个问题在这里已经有答案了 在 Java 中 您可以创建仅包含抽象方法的抽象类 另一方面 您可以创建一个声明相同方法的接口 既然如此 能不能用抽象类来代替接口呢 不总是 一个类可以扩展only one class 一个类可以实现超过一个界面
  • 使用@View注解与在@Component注解中指定参数

    在 Angular io 文档中 它说 每个 Angular 组件都需要一个 Component 和至少一个 View 注释 LINK但即使是它的示例 也没有使用 View 注释 我的问题是 使用 View或在 Component注解中指定
  • 为什么 setnames() 会影响复制的表?

    我想创建 data table 的副本并更改新表中的列名称 当我更改 y V1 的名称时 x V1 的名称也会更改 为什么会这样 我该如何避免这种行为 Example x lt data table c 1 2 3 c 1 2 3 y lt
  • 无法打开 .accdb 文件,因为 Access 正在查找硬编码路径

    我收到了几个 accdb来自客户端的文件 我正在尝试打开它们Microsoft Access 2013 这些文件似乎可以正确打开 但每当我单击左侧的任何表或查询时 我都会收到以下错误消息 C hard coded path on clien
  • 请求 READ_SMS 权限后,包安装程序在 Android M 中崩溃

    我有一个尝试访问的登录片段 TelephonyManager getActivity getSystemService Context TELEPHONY SERVICE 这适用于 Lollipop 5 1 及以上版本的设备 当我在 Mar