您的位置:首页 > 移动开发 > Android开发

android用Intent隐式意图调起(百度,谷歌,高德地图)

2017-05-03 15:37 465 查看
1.权限

<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission
android:name="android.permission.INTERNET"/><uses-permission
android:name="com.android.launcher.permission.READ_SETTINGS"
/><uses-permission
android:name="android.permission.WAKE_LOCK"/><uses-permission
android:name="android.permission.CHANGE_WIFI_STATE"
/><uses-permission
android:name="android.permission.ACCESS_WIFI_STATE"
/><uses-permission
android:name="android.permission.GET_TASKS"
/><uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission
android:name="android.permission.WRITE_SETTINGS"
/>


2.布局中

<Button
android:id="@+id/button_gao"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="调起高德地图" />
<Button
android:id="@+id/button_bai"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="调起百度地图" />
<Button
android:id="@+id/button_gu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="调起谷歌地图" />


3.activity类中

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private Intent intent;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}

private void initView() {
Button button_bai = (Button) findViewById(R.id.button_bai);
Button button_gao = (Button) findViewById(R.id.button_gao);
Button button_gu = (Button) findViewById(R.id.button_gu);
button_bai.setOnClickListener(this);
button_gao.setOnClickListener(this);
button_gu.setOnClickListener(this);

}

@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button_bai:
if(isAvilible(MainActivity.this,"com.baidu.BaiduMap")){//传入指定应用包名

try {
//                          intent = Intent.getIntent("intent://map/direction?origin=latlng:34.264642646862,108.95108518068|name:我家&destination=大雁塔&mode=driving®ion=西安&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
//"origin=latlng:"+"34.264642646862,108.95108518068&" +   //起点  此处不传值默认选择当前位置
//终点
//导航路线方式
//
intent = Intent.getIntent("intent://map/direction?" +
//"origin=latlng:"+"34.264642646862,108.95108518068&" +   //起点  此处不传值默认选择当前位置
"destination=latlng:"+34.264642646862+","+108.95108518068+"|name:我的目的地"+        //终点
"&mode=driving&" +          //导航路线方式
"region=北京" +           //
"&src=慧医#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
startActivity(intent); //启动调用
} catch (URISyntaxException e) {
Log.e("intent", e.getMessage());
}
}else{//未安装
//market为路径,id为包名
//显示手机上所有的market商店
Toast.makeText(MainActivity.this, "您尚未安装百度地图", Toast.LENGTH_LONG).show();
Uri uri = Uri.parse("market://details?id=com.baidu.BaiduMap");
intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
break;
case R.id.button_gao:
if (isAvilible(MainActivity.this, "com.autonavi.minimap")) {
try{
intent = Intent.getIntent("androidamap://navi?sourceApplication=慧医&poiname=我的目的地&lat="+34.264642646862+"&lon="+108.95108518068+"&dev=0");
startActivity(intent);
} catch (URISyntaxException e)
{e.printStackTrace(); }
}else{
Toast.makeText(MainActivity.this, "您尚未安装高德地图", Toast.LENGTH_LONG).show();
Uri uri = Uri.parse("market://details?id=com.autonavi.minimap");
intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
break;
case R.id.button_gu:
if (isAvilible(MainActivity.this,"com.google.android.apps.maps")) {
Uri gmmIntentUri = Uri.parse("google.navigation:q="+34.264642646862+","+108.95108518068 +", + Sydney +Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
}else {
Toast.makeText(MainActivity.this, "您尚未安装谷歌地图", Toast.LENGTH_LONG).show();

Uri uri = Uri.parse("market://details?id=com.google.android.apps.maps");
intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);  }
break;
}
}
/*  * 检查手机上是否安装了指定的软件
* @param context
* @param packageName:应用包名
* @return
*/
public static boolean isAvilible(Context context, String packageName){
//获取packagemanager
final PackageManager packageManager = context.getPackageManager();
//获取所有已安装程序的包信息
List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
//用于存储所有已安装程序的包名
List<String> packageNames = new ArrayList<String>();
//从pinfo中将包名字逐一取出,压入pName list中
if(packageInfos != null){
for(int i = 0; i < packageInfos.size(); i++){
String packName = packageInfos.get(i).packageName;
packageNames.add(packName);
}
}
//判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE
return packageNames.contains(packageName);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: