我知道另一个应用程序接受意图类型: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'
谢谢。
答案 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);