我正在开发一个应用程序,我用包管理器列出已安装的应用程序。我可以获取项目的包名称,但我想根据包启动详细信息屏幕。因此,例如,如果在列表中选择了Dolphin Browser,您将看到以下图像。我怎么能这样做?
最终解决方案将您的目标设置为Gingerbread API级别9,并将您的min设置为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);
}
答案 0 :(得分:11)
试试这个:
startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:your.package.here")));
将“package:your.package.here”替换为您要查看的真实包...
答案 1 :(得分:10)
这是一款功能齐全的应用,其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>
布局文件夹中的。希望这有效:)
答案 2 :(得分:1)
启动应用的应用信息设置。
Uri uri = new Uri.Builder()
.scheme("package")
.opaquePart(getPackageName())
.build();
startActivity(new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, uri));
答案 3 :(得分:0)
这是这样做的方法,这是使用来自您的应用程序的构建信息的通用答案。您必须使用 FLAG_ACTIVITY_NEW_TASK
并为您的应用构建正确的 URI
。
// Build intent that displays the App settings screen.
Intent intent = new Intent();
intent.setAction(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package",
BuildConfig.APPLICATION_ID, null);
intent.setData(uri);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
例如,您可以在小吃店使用它。
Snackbar.make(
findViewById(R.id.activity_layout),
"snackbar text",
Snackbar.LENGTH_INDEFINITE)
.setAction("Settings", new View.OnClickListener() {
@Override
public void onClick(View view) {
// Build intent that displays the App settings screen.
Intent intent = new Intent();
intent.setAction(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package",
BuildConfig.APPLICATION_ID, null);
intent.setData(uri);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
})
.show();