【发布时间】:2018-12-02 21:15:27
【问题描述】:
我想以编程方式开始管理应用程序 (Settings -> Application -> manage application -> Application info) 屏幕。我做不到。谁能帮帮我?
提前致谢。
【问题讨论】:
-
检查此链接,这是同一个问题 afaik:stackoverflow.com/questions/4421527/…
我想以编程方式开始管理应用程序 (Settings -> Application -> manage application -> Application info) 屏幕。我做不到。谁能帮帮我?
提前致谢。
【问题讨论】:
根据link
在 Android 2.3 中,您可以在带有适当 Uri 的 ACTION_APPLICATION_DETAILS_SETTINGS Intent 上使用 startActivity() 来调出应用的“管理”屏幕
或
private static final String SCHEME = "package";
private static final String APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName";
private static final String APP_PKG_NAME_22 = "pkg";
private static final String APP_DETAILS_PACKAGE_NAME = "com.android.settings";
private static final String APP_DETAILS_CLASS_NAME = "com.android.settings.InstalledAppDetails";
public static void showInstalledAppDetails(Context context, String packageName) {
Intent intent = new Intent();
final int apiLevel = Build.VERSION.SDK_INT;
if (apiLevel >= 9) { // above 2.3
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts(SCHEME, packageName, null);
intent.setData(uri);
} else { // below 2.3
final String appPkgName = (apiLevel == 8 ? APP_PKG_NAME_22
: APP_PKG_NAME_21);
intent.setAction(Intent.ACTION_VIEW);
intent.setClassName(APP_DETAILS_PACKAGE_NAME,
APP_DETAILS_CLASS_NAME);
intent.putExtra(appPkgName, packageName);
}
context.startActivity(intent);
}
【讨论】:
从 API 级别 9 (Android 2.3) 开始,您可以使用 android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS 启动 Intent。因此:
packageName = "your.package.name.here"
try {
//Open the specific App Info page:
Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + packageName));
startActivity(intent);
} catch ( ActivityNotFoundException e ) {
//e.printStackTrace();
//Open the generic Apps page:
Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
startActivity(intent);
}
【讨论】: