通过包名调用第三方应用

通过包名查找有无安装第三方apk,没有的话安装,有的话直接调用。


	private boolean isApkInstalled(String packageName) {
		PackageManager pm = getPackageManager();
		boolean installed =false;
		try {
			pm.getPackageInfo(packageName,PackageManager.GET_ACTIVITIES);
			Log.d(TAG,"vslink has installed");
			installed =true;
		} catch(PackageManager.NameNotFoundException e) {
			Log.d(TAG,"vslink not installed yet");
			installed =false;
		}
		return installed;
	}
	
	private void installAPK(String APKName){
		if (getAssetsData(APKName)){
			if (appleMirrorApk.exists()){
				Intent intent = new Intent();
				intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
				intent.setAction(Intent.ACTION_VIEW);
				String type = "application/vnd.android.package-archive";
				intent.setDataAndType(Uri.fromFile(appleMirrorApk), type);
				startActivity(intent);
				finish();
			}
		}
	}

	private void createInstallDialog(){
		mDialog = new AlertDialog.Builder(this).
				setTitle(R.string.message).
				setMessage(R.string.install_apple_mirror_apk).
				setIcon(android.R.drawable.ic_dialog_alert).
				setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						mDialog.dismiss();
						installAPK("AppleMirrorEmu.apk");
					}
				}).
				setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						mDialog.dismiss();
					}
				}).create();
		mDialog.setCanceledOnTouchOutside(false);
	}
	
	private void showInstallDialog(){
		mDialog.show();
	}

	private void doStartApplicationWithPackageName(String package_name) {

		PackageInfo packageinfo = null;
		if (!isApkInstalled(package_name)){
			Log.d(TAG,"show install dialog");
			showInstallDialog();
		}else {
			try {
				packageinfo = getPackageManager().getPackageInfo(package_name, 0);
			} catch (PackageManager.NameNotFoundException e) {
				e.printStackTrace();
			}
			if (packageinfo == null) {
				return;
			}

			Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
			resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
			resolveIntent.setPackage(packageinfo.packageName);

			List<ResolveInfo> resolveInfoList = getPackageManager()
					.queryIntentActivities(resolveIntent, 0);

			ResolveInfo resolveinfo = resolveInfoList.iterator().next();
			if (resolveinfo != null) {
				String packageName = resolveinfo.activityInfo.packageName;
				String className = resolveinfo.activityInfo.name;
				// LAUNCHER Intent
				Intent intent = new Intent(Intent.ACTION_MAIN);
				intent.addCategory(Intent.CATEGORY_LAUNCHER);
				ComponentName cn = new ComponentName(packageName, className);
				intent.setComponent(cn);
				intent.putExtra("VSLink",30);
				startActivity(intent);
				//finish();
			}
		}
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值