簡體   English   中英

android意圖在android 11中打開谷歌地圖不起作用

[英]android intent to open google maps in android 11 not working

android意圖在android 11中打開谷歌地圖不再工作,但在較低的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();

                }

Android studio 顯示了這個建議:

調用此方法時,請考慮在清單中添加聲明; 有關詳細信息,請參閱https://g.co/dev/packagevisibility

將此添加到您的清單

<manifest package="com.example.game">

    <queries>
             <package android:name="com.google.android.apps.maps" />
    </queries>
    ...

</manifest>

如果您的應用面向 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>

更多信息:

  1. Android 11 中的包可見性
  2. Android 上的包可見性過濾

如果你想從一個網址打開谷歌地圖(例如https://www.google.com/maps/dir/?api=1&dir_action=navigate&origin=${origin.latitude},${origin.longitude}&destination=${目的地.緯度},${目的地.經度} )

你必須在 Android Manifest 中添加下一個權限:

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>

然后查詢標簽:

<queries>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data  android:scheme="https" />
    </intent>
</queries>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM