通过包名查找有无安装第三方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();
}
}
}
通过包名调用第三方应用
最新推荐文章于 2024-07-15 11:30:36 发布