整个过程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);
}
}