使用 Intent.resolveActivity 检查设备中是否存在 Waze 应用程序在 Android 13 及更高版本中无法运行

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

我尝试使用此代码来检查设备中是否有 Waze 应用程序,即使我的设备中有 Waze(适用于 Android 13 及更高版本),它也始终返回 false。

fun isWazeExist(): Boolean {
    val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://waze.com/ul?q=Hawaii")) 
    intent.setPackage("com.waze")
    intent.resolveActivity(context.packageManager)?.let {
        true
    ?:let {
        false
    }
}

但是,如果我将意图更改为 Google Map URI 和包名称,该功能就可以工作。

fun isGoogleMapExist(): Boolean {
    val intent = Intent(Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=bigcity")) 
    intent.setPackage("com.google.android.apps.maps")
    intent.resolveActivity(context.packageManager)?.let {
        true
    ?:let {
        false
    }
}
android google-maps mobile-development android-package-managers waze
1个回答
0
投票

从 Android 11 开始,您根本无法检查“某些应用程序”是否已安装(或获取所有已安装应用程序的列表),出于安全和隐私原因

更多信息这里这里这里

只是猜测为什么你可以检查地图的存在:因为它是系统应用程序,预安装或设置为默认值(用于导航?)

© www.soinside.com 2019 - 2024. All rights reserved.