gpt4 book ai didi

java - Intent Action_dial 在 android 11 中不起作用

转载 作者:行者123 更新时间:2023-12-04 16:37:02 24 4
gpt4 key购买 nike

我目前正在开发一个 android 应用程序,需要一个启动电话的功能,所以我添加了这个代码。

 public void dialPhoneNumber(String phoneNumber) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:" + phoneNumber));
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
}
.. 它似乎在较旧的 android 版本中运行良好,但是当我在 android 11 中测试它时,它根本不起作用我试过 action_call并添加了权限 <uses-permission android:name="android.permission.CALL_PHONE" />还是不行。

最佳答案

您的问题在于代码行 intent.resolveActivity(getPackageManager()) .当您调用 resolveActivity 时,您会收到如下警告:

Consider adding a declaration to your manifest when calling this method; see https://g.co/dev/packagevisibility for details


查看 PackageManager 下的文档,您将看到以下注释:

Note: If your app targets Android 11 (API level 30) or higher, the methods in this class each return a filtered list of apps. Learn more about how to manage package visibility.


那是什么意思?
在 android 11 中,Google 添加了包可见性策略。应用程序现在可以更严格地控​​制查看其他应用程序。您的应用程序将无法查看或访问您的应用程序之外的应用程序。
你需要做什么?
您需要做的就是将以下代码行添加到 AndroidManifest.xml :
<manifest>
<queries>
<!-- Specific intents you query for -->
<intent>
<action android:name="android.intent.action.DIAL" />
</intent>
</queries>
</manifest>
更多信息:
  • Package visibility in Android 11
  • Package visibility filtering on Android
  • 关于java - Intent Action_dial 在 android 11 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68659088/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com