将意图传递给另一个Android应用程序

时间:2012-01-03 14:56:19

标签: android

我知道另一个应用程序接受意图类型:vnd.android.cursor.item / postal-address

我可以通过致电来表明:

Uri dataUri = Uri.parse("test");
    Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
 intent.setDataAndType(dataUri, "vnd.android.cursor.item/postal-address");

问题是,如何通过格式良好的地址?

E.g。我通过了     Uri dataUri = Uri.parse(“content://com.android.contacts/data/2057”); 它有效,但我想传递新地址(而不是来自联系人)。

更新:此外部应用程序有两个intent-filters:

意图滤波器: 动作:'android.intent.action.MAIN' 类别:'android.intent.category.DEFAULT' 数据: mimeType:'vnd.android.cursor.item / postal-address'

意图滤波器: 动作:'android.intent.action.MAIN' 类别:'android.intent.category.DEFAULT' 数据: mimeType:'vnd.android.cursor.item / postal-address_V2' 方案:'内容' 主持人:'com.android.contacts'

谢谢。

2 个答案:

答案 0 :(得分:2)

我的观察如下。意图中的此外部应用程序接收联系人的ID。然后它提取此联系人并获取联系人的邮政地址。因此,该应用程序向联系人内容提供者进行查询并自己提取邮政地址。因此,您应该为此应用程序提供联系人的有效URL。

因此,我认为此外部应用程序仅需要来自联系人内容提供商的URL。除非您不控制此外部应用程序,否则无法强制应用程序从其他源提取数据。

更新:如果您只想使用此地址显示Google地图,请尝试以下网址:

Uri geoUri = Uri.parse("geo:0,0?q=your_address");
Intent mapCall = new Intent(Intent.ACTION_VIEW, geoUri);  
startActivity(mapCall);

答案 1 :(得分:1)

您可以通过创建Bundle并将其添加到Intent对象来传递数据,然后检索Intent并在之后读取Bundle数据。像这样的东西会创建一个简单的Bundle:

Bundle b = new Bundle();
b.putString("address", addressTV.getText().toString()); //can be whatever address string you want
intent.putExtras(b);