根据应用名获取器包名并根据包名启动该应用:
public void getAppList() {
ArrayList<AppInfo> appList = new ArrayList<AppInfo>(); // 用来存储获取的应用信息数据,手机上安装的应用数据都存在appList里
List<PackageInfo> packages = getPackageManager()
.getInstalledPackages(0);
for (int i = 0; i < packages.size(); i++) {
PackageInfo packageInfo = packages.get(i);
AppInfo tmpInfo = new AppInfo();
tmpInfo.appName = packageInfo.applicationInfo.loadLabel(
getPackageManager()).toString();
tmpInfo.packageName = packageInfo.packageName;
tmpInfo.versionName = packageInfo.versionName;
tmpInfo.versionCode = packageInfo.versionCode;
tmpInfo.appIcon = packageInfo.applicationInfo
.loadIcon(getPackageManager());
// Log.d("zzml",
// " appName--》"+packageInfo.applicationInfo.loadLabel(getPackageManager()).toString()+" packageName--->"+packageInfo.packageName);
appList.add(tmpInfo);
if (packageInfo.applicationInfo.loadLabel(getPackageManager())
.toString().equals("语音助手")) {
ConstantsData.OppoVoiceApkName = packageInfo.packageName;
Log.d("zzml", "语音助手包名---》" + ConstantsData.OppoVoiceApkName);
}
// //判断是否系统应用
// if((packageInfo.applicationInfo.flags &
// ApplicationInfo.FLAG_SYSTEM) == 0) {
// //非系统应用
// // Log.d("zzml", "非系统应用");
//
// } else {
// //系统应用
// // Log.d("zzml", "系统应用");
// }
}
}
private void RunApp(String packageName) {
PackageInfo pi;
try {
pi = getPackageManager().getPackageInfo(packageName, 0);
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.setPackage(pi.packageName);
PackageManager pManager = getPackageManager();
List apps = pManager.queryIntentActivities(resolveIntent, 0);
ResolveInfo ri = (ResolveInfo) apps.iterator().next();
if (ri != null) {
packageName = ri.activityInfo.packageName;
String className = ri.activityInfo.name;
Intent intent = new Intent(Intent.ACTION_MAIN);
ComponentName cn = new ComponentName(packageName, className);
intent.setComponent(cn);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}
}