Telephony.Sms.getDefaultSmsPackage(getApplicationContext());
为什么在 android 11 中返回 null?
使用权限 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"
的部分与检查短信应用程序无关。我需要它来查询默认拨号器应用程序,我只是将其粘贴到此处作为示例。
文档中详细介绍了短信查询,但文档指出这对于文档中未列出的其他意图有效 - 因此这是添加您可能感兴趣的其他意图的示例...
今天我也遇到了这种情况,发现从android R我们需要在AndroidManifeat文件中声明uses-permission。
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
根据文档,
queries
意图过滤器应该是:
<queries>
<intent>
<action android:name="android.provider.Telephony.SMS_DELIVER"/>
</intent>
</queries>