getDefaultSmsPackage() 在 android 11 中返回 Null

问题描述 投票:0回答:3

Telephony.Sms.getDefaultSmsPackage(getApplicationContext());

为什么在 android 11 中返回 null?

android sms
3个回答
3
投票

使用权限 QUERY_ALL_PACKAGES 是有问题的,因为如果您的应用不符合使用权限,您可能需要将其删除。 这将于 2022 年 3 月生效 - 请参阅此处的详细信息

要查询短信应用程序,您可以使用此处详细介绍的方法

我使用此解决方案来查询消息传递应用程序和拨号器应用程序,它工作正常

<queries>

    <intent>
      <action android:name="android.intent.action.SENDTO"/>
      <data android:scheme="smsto" android:host="*" />
    </intent>

    <intent>
      <action android:name="android.intent.action.DIAL"/>
      <data android:scheme="tel" android:host="*" />
    </intent>

</queries>

注意:

关于

"android.intent.action.DIAL"
的部分与检查短信应用程序无关。我需要它来查询默认拨号器应用程序,我只是将其粘贴到此处作为示例。

文档中详细介绍了短信查询,但文档指出这对于文档中未列出的其他意图有效 - 因此这是添加您可能感兴趣的其他意图的示例...


1
投票

今天我也遇到了这种情况,发现从android R我们需要在AndroidManifeat文件中声明uses-permission。

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />

0
投票

根据文档

queries
意图过滤器应该是:

<queries>
     <intent>
         <action android:name="android.provider.Telephony.SMS_DELIVER"/>
     </intent>
 </queries>
© www.soinside.com 2019 - 2024. All rights reserved.