【问题标题】:Declaring Package Visibility - default android messaging app package name [duplicate]声明包可见性-默认的android消息传递应用程序包名称[重复]
【发布时间】:2022-10-12 22:37:12
【问题描述】:

我最近注意到,当我升级到 30 或更高版本的 Android API 时,我的链接功能已经停止工作。看来推理是由于Android实现了declare package visibility的需要。

所以现在,当我尝试使用 Linking.canOpenURL 在我的 android 设备上打开默认的短信应用程序时,什么也没有发生。

我假设将此包名称添加到我的 AndroidManifest.xml 文件将解决此问题。查看 android 文档中的示例代码,我们看到以下内容。

<manifest package="com.example.game">
    <queries>
        <package android:name="com.example.store" />
        <package android:name="com.example.services" />
    </queries>
    ...
</manifest>

我希望能够打开默认的短信应用程序任何安卓设备。如何获取任何设备的默认短信应用程序的包名称并将其包含在我的清单文件中?

【问题讨论】:

    标签: android sms android-manifest android-api-30


    【解决方案1】:

    您无需知道默认消息应用程序是什么即可启动它。发送此意图所需的一切:

        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_APP_MESSAGING);
        intent.setFlags(Intent.FLAG_FROM_BACKGROUND | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
    

    或者,如果您真的想向特定手机发送短信#:

        Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("sms:5551234567"));
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    

    显然,将“5551234567”替换为实际电话号码

    【讨论】:

    • 所以我会使用这个意图而不是 linking.canOpenURL 函数?只是有点困惑......我需要打开短信应用程序并将电话号码传递给它才能开始发短信。
    • 我发布的内容只会打开默认的 SMS 应用程序。如果你想开始一条新的短信,你需要一个不同的意图。我正在更新我的答案...
    • 仅供参考-我再次更新了答案-第二个意图不应该有intent.addCategory()
    • 直到明天才会出现在我的电脑前,但我会尽快更新答案
    • 不确定您指的是什么文档,但这里有一些关于常见意图的信息:developer.android.com/guide/components/intents-common
    猜你喜欢
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多