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
.
不匹配
我知道许多措辞相似的问题都被否决了。但是,我已经查看了此处的许多线程和 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
.