#android
#Android
Вопрос:
Я использую следующий код, чтобы получить список установленных приложений и запустить их.Это открывает только такие приложения, как калькулятор или часы.Когда я пытаюсь открыть приложения, такие как контакты или камера, это не работает, поскольку их активность запуска равна нулю.Как мне открыть такие приложения.
В приведенном ниже коде s[5] указывает на камеру.
final PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm
.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages)
{
s[i]=packageInfo.packageName;
i ;
Log.d(TAG, "Installed package :" packageInfo.packageName);
Log.d(TAG,"Launch Activity :" pm.getLaunchIntentForPackage(packageInfo.packageName));
}
}
Intent mIntent = getPackageManager().getLaunchIntentForPackage(s[5]);
try {
startActivity(mIntent);
}
catch (Exception err) {
Toast t = Toast.makeText(getApplicationContext(),
"Not Found", Toast.LENGTH_SHORT);
t.show();
}
}
}
Ответ №1:
Я, наконец, смог решить проблему.Следующий код запускает все приложения.
PackageManager pm = this.getPackageManager();
setContentView(R.layout.main);
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0);
Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm));
TextView c=(TextView)findViewById(R.id.textView1);
for(int i1=0; i1<appList.size(); i1 ){
c.setText(c.getText() "n"
"number: " i1 "n"
"Name: " appList.get(i1).loadLabel(pm) "n"
);
}
Intent i11 = new Intent();
i11.setAction(Intent.ACTION_MAIN);
i11.addCategory(Intent.CATEGORY_LAUNCHER);
i11.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
i11.setComponent(new ComponentName(appList.get (3).activityInfo.applicationInfo.packageName, appList.get(3).activityInfo.name));
startActivity(i11);