Android 在本应用中打开其它应用

整个过程AndroidManifest不须要添加任何权限
1.判断是否安装目标应用
须要对是否有目标应用作判断,使用时传入目标应用的完整包名java

/** * 判断是否安装目标应用 * @param packageName 目标应用安装后的包名 * @return 是否已安装目标应用 */
    private boolean isInstallByread(String packageName) {
        return new File("/data/data/" + packageName).exists();
    }

2.启动目标应用android

/** * 启动目标应用 * @param packageName 目标应用安装后的包名 */
    private void launchApp(String packageName) {
        PackageManager packageManager=this.getPackageManager();
        //得到目标应用的launch路径
        Intent intent=packageManager.getLaunchIntentForPackage(packageName);
        startActivity(intent);
    }

3.若是目标应用未安装,提示他到appstore下载web

/** * 下载目标应用 * @param packageName 目标应用安装后的包名 */
    private void loadApp(String packageName) {
        Uri uri = Uri.parse("market://details?id=" +packageName);//id后面接包名
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(intent);
    }

4.一个完整的调用百度地图的列子:app

import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.io.File;

public class MainActivity extends AppCompatActivity {
private Button mButton;
private String mBaiduMap="com.baidu.BaiduMap";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mButton= (Button) findViewById(R.id.button);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            if(isInstallByread(mBaiduMap)){
                Toast.makeText(MainActivity.this,"BaiduMap is install ...",
                Toast.LENGTH_LONG).show();
                launchApp(mBaiduMap);
           }else{
               Toast.makeText(MainActivity.this,"BaiduMap is Uninstall !!!!",
               Toast.LENGTH_LONG).show();
               loadApp(mBaiduMap);

            }
            }
        });
    }

    /** * 判断是否安装目标应用 * @param packageName 目标应用安装后的包名 * @return 是否已安装目标应用 */
    private boolean isInstallByread(String packageName) {
        return new File("/data/data/" + packageName).exists();
    }

    /** * 启动目标应用 * @param packageName 目标应用安装后的包名 */
    private void launchApp(String packageName) {
        PackageManager packageManager=this.getPackageManager();
        Intent intent=packageManager.getLaunchIntentForPackage(packageName);
        startActivity(intent);
    }
    /** * 下载目标应用 * @param packageName 目标应用安装后的包名 */
    private void loadApp(String packageName) {
        Uri uri = Uri.parse("market://details?id=" +packageName);//id后面接包名
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(intent);
    }


}