我想以编程方式打开应用信息页面。
其中(强制停止,卸载,清除数据,清除缓存)选项可用。我在列表中有正在运行的进程ID。
现在,当我点击列表项时,我正在尝试打开应用信息。我搜索了很多但却找不到任何与之相关的话题。
答案 0 :(得分:2)
getAppNameFromPID(int PID)
获取包名称showInstalledAppDetails(String packageName)
启动应用信息/详细信息设置页面。这两种方法应该像这样创建:
public void showInstalledAppDetails(String packageName) {
Intent intent = new Intent();
if (Build.VERSION.SDK_INT >= 9) { //this supports all API levels
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);
}
startActivity(intent);
}
private String getAppName(int pID)
{
ActivityManager am = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
List list = am.getRunningAppProcesses();
Iterator i = list.iterator();
PackageManager pm = this.getPackageManager();
while(i.hasNext()) {
ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo)(i.next());
try {
if(info.pid == pID) //see *NOTE: you might need to compare with info.pkgList
return info.processName;
} catch(Exception e) {
Log.d("getAppName", "Error>> :"+ e.toString());
}
}
return "";
}
每种方法似乎都是单独工作的,我认为这种方法可以满足您的需求。
*注意:如果进程名称与包名称不同(例如,它是具有不同包名称的服务),则不起作用。您可能需要调整getAppName
以与info.pkgList中的字符串[]进行比较。如果有效,请告诉我们。