Android:在两个应用程序之间传递明确的 Uri Intent(未找到 activity 来处理 Intent)

Android: Passing explicit Uri Intent between two apps (No activity found to handle Intent)

我知道许多措辞相似的问题都被否决了。但是,我已经查看了此处的许多线程和 Android 开发者网站(包括 https://developer.android.com/guide/components/intents-filters.html and https://android-developers.googleblog.com/2009/11/integrating-application-with-intents.html )上的多个页面,但无法确定如何将指南应用于我的情况。

我希望将位置数据(纬度和经度)从我正在编写的应用程序传输到我编写的地图应用程序。

接收应用程序的包名称是 com.prepbgg.mymap,它的主要 activity 是 .MyMap。清单包括:

<activity android:name=".MyMap"
          android:label="@string/app_name"
          android:configChanges ="orientation" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action android:name="com.prepbgg.mymap.action.GEO"/>
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="geo" android:host="mymap.prepbgg.com"/>
    </intent-filter>
</activity>

主要activity(MyMap.java)包括:

Intent intent = getIntent();
Uri myMapData = intent.getData();

try {
    Toaster.Toast(myMapData.toString(),"Long");
    Log.i("nba",myMapData.toString());
} catch(Exception e) {
    Toaster.Toast("No data received","Long");
    Log.i("nba","No data received");
}

发送应用程序包含此代码:

    val btnMyMap = findViewById<ImageButton>(R.id.btnMyMap)
    btnMyMap.setOnClickListener() {
        var mmUriString = "geo:51.3,-0.31" // Lat and Long hard-coded for test purposes
        var mmIntentUri = Uri.parse(mmUriString)
        val mmIntent = Intent("com.prepbgg.mymap.action.GEO",mmIntentUri)
        mmIntent.setPackage("com.prepbgg.mymap")
        startActivity(mmIntent)
    }

当我点击发送应用程序中的相关按钮时,它失败了,出现异常:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.prepbgg.mymap.action.GEO dat=geo:51.3,-0.31 pkg=com.prepbgg.mymap }

替换:

<data android:scheme="geo" android:host="mymap.prepbgg.com"/>

与:

<data android:scheme="geo" />

A geo Uri 没有主机,您也没有在 Uri 中使用主机。但是,您的 <intent-filter> 要求主机 mymap.prepbgg.com,因此您的过滤器与 Intent.

不匹配