Страница запуска приложений Android

Я работаю над приложением, где я перечисляю установленные приложения с менеджером пакетов. Я могу получить имя пакета для элемента, который был нажат, но я бы хотел запустить экран сведений, основанный на пакете. Так, например, если в списке был выбран браузер Dolphin, вы увидите следующее изображение. Как я могу это сделать?

Введите описание изображения здесь

Окончательное решение поставило вашу цель в качестве уровня API Gingerbread API 9 и установило минимальный уровень API как уровень API 7

final int apiLevel = Build.VERSION.SDK_INT; Intent intent = new Intent(); if (apiLevel >= 9) { //TODO get working on gb //Toast.makeText(SDMove.this, "Gingerbread Not Currently Supported", Toast.LENGTH_LONG).show(); startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + pli.pkg.packageName))); } else { final String appPkgName = (apiLevel == 8 ? "pkg" : "com.android.settings.ApplicationPkgName"); intent.setAction(Intent.ACTION_VIEW); intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); intent.putExtra(appPkgName, pli.pkg.packageName); startActivity(intent); } 

Solutions Collecting From Web of "Страница запуска приложений Android"

Вот полностью работающее приложение с ListActivity котором перечислены все установленные приложения. Когда вы нажимаете имя пакета, он открывает детали приложения.

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Intent for getting installed apps. Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); // Get installed apps List<ResolveInfo> appList = this.getPackageManager().queryIntentActivities(mainIntent, 0); // Make new list for package names and fill the list. List<String> packageNameList = new ArrayList<String>(); for (ResolveInfo resolveInfo : appList) { packageNameList.add(resolveInfo.activityInfo.packageName); } // Set the list adapter. setListAdapter(new ArrayAdapter<String>(this, R.layout.simple, packageNameList)); } public void onListItemClick(ListView l, View v, int position, long id) { // Get the TextView that was clicked. TextView view = (TextView)v; // Get the text from the TextView. String packageName = (String)view.getText(); // Open AppDetails for the selected package. showInstalledAppDetails(packageName); } public void showInstalledAppDetails(String packageName) { final int apiLevel = Build.VERSION.SDK_INT; Intent intent = new Intent(); if (apiLevel >= 9) { intent.setAction(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + packageName)); } else { final String appPkgName = (apiLevel == 8 ? "pkg" : "com.android.settings.ApplicationPkgName"); intent.setAction(Intent.ACTION_VIEW); intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); intent.putExtra(appPkgName, packageName); } // Start Activity startActivity(intent); } 

Помните, что main.xml :

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <TextView android:id="@android:id/empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="No apps installed"/> </LinearLayout> 

И simple.xml :

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> </TextView> 

В папке макета . Надеюсь, это сработает 🙂

Попробуй это:

 startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:your.package.here"))); 

И замените «package: your.package.here» на реальный пакет, который вы хотите просмотреть …