Hig*_*ife 6 maps android dialog
当我使用此代码时
string url = "somegooglemapsurl.com";
Intent mapLauncherIntent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(url));
startActivity(mapLauncherIntent);
Run Code Online (Sandbox Code Playgroud)
弹出一个选择对话框,询问我是否要在地图应用程序或浏览器中打开此地图.我希望从应用程序活动到Google地图的过渡是无缝的.如何禁止此对话框并告诉android在地图活动中打开地图?
编辑:当我进入谷歌地图时,我想在某个位置使用公共蒸腾打开方向提示.我可以通过谷歌地图网址来做到这一点,但是网址会显示选择对话框.
小智 17
我还没有找到一个完美的解决方案,但这至少会打开预先选定正确目的地和公共交通的地图.然后所有用户要做的就是点击指示按钮.
它还检查是否安装了谷歌地图,如果是这样,则更喜欢使用谷歌地图.
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?daddr=0,0%20(Imaginary%20Place)&dirflg=r"));
if (isAppInstalled("com.google.android.apps.maps")) {
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
}
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
// helper function to check if Maps is installed
private boolean isAppInstalled(String uri) {
PackageManager pm = getApplicationContext().getPackageManager();
boolean app_installed = false;
try {
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
app_installed = true;
} catch (PackageManager.NameNotFoundException e) {
app_installed = false;
}
return app_installed;
}
Run Code Online (Sandbox Code Playgroud)
以下是我目前发现的不同方法:
1.直接启动导航:
此明确意图将直接启动Google导航:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("google.navigation:q=my+street+address");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
这将直接启动导航(遗憾的是没有给用户选择运输方式)
.
2.让用户选择运输方式:
这将启动Google导航应用,但允许用户在开始导航之前选择传输方式:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("http://maps.google.com/maps/?daddr=my+street+address");
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
.
3.从Google地图上开始:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("geo:0,0?q=my+street+address");
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
这将启动地图,用户可以从那里开始导航(并选择运输模式).
在所有情况下,您应该使用PackageManager和queryIntentActivities()或异常处理来处理用户未安装Google Maps/Navigation的情况.
在我的应用程序中,我使用方法2,它工作正常.希望这可以帮助.
附加组件:这是检查是否安装了应用程序的方法.我在调用intent.setClassName()之前使用它来检查是否安装了"com.google.android.apps.maps".
public static boolean isAppInstalled(String uri) {
PackageManager pm = getContext().getPackageManager();
boolean app_installed = false;
try {
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
app_installed = true;
} catch (PackageManager.NameNotFoundException e) {
app_installed = false;
}
return app_installed;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5946 次 |
| 最近记录: |