android意图在android 11中打开Google地图不再工作但可以在较低的API上工作
我们有这个功能
Intent mapIntent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("google.navigation:q=" + PICK_LATITUDE + "," + PICK_LONGITUDE ));
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}else{
Snackbar.make(root, "Google apps is not installed" , Snackbar.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)
Android studio 显示了这个建议:
调用此方法时,请考虑在清单中添加声明;有关详细信息,请参阅https://g.co/dev/packagevisibility
Rid*_*zag 16
将其添加到您的清单中
<manifest package="com.example.game">
<queries>
<package android:name="com.google.android.apps.maps" />
</queries>
...
</manifest>
Run Code Online (Sandbox Code Playgroud)
如果您的应用面向 Android 11 或更高版本,并且需要与自动可见的应用程序以外的应用程序进行交互,请在应用程序的清单文件中添加该元素。在该元素中,通过包名称、意图签名或提供商权限指定其他应用程序
更多详细信息请参见此处 声明包可见性需求
你的问题出在代码行上intent.resolveActivity(getPackageManager())。当您调用resolveActivity时,您将收到如下警告:
调用此方法时,请考虑在清单中添加声明;有关详细信息,请参阅https://g.co/dev/packagevisibility
查看PackageManager下的文档,你会看到这样的注释:
注意:如果您的应用面向 Android 11(API 级别 30)或更高版本,则此类中的每个方法都会返回经过筛选的应用列表。详细了解如何管理包可见性。
那么这是什么意思呢?
在 Android 11 中,Google 添加了包可见性策略。应用程序现在可以更严格地控制查看其他应用程序。您的应用程序将无法查看或访问您的应用程序之外的应用程序。
你需要做什么?
您需要做的就是添加以下代码行AndroidManifest.xml:
<manifest>
<queries>
<!-- Specific intents you query for -->
<package android:name="com.google.android.apps.maps" />
</queries>
</manifest>
Run Code Online (Sandbox Code Playgroud)
更多信息:
| 归档时间: |
|
| 查看次数: |
5877 次 |
| 最近记录: |