android里怎么获取单个应用程序的详细信息

android里怎么获取单个应用程序的详细信息,第1张

android应用程序详细信息可以通过PackageManger管理类来获得,PackageManger管理所有程序包的信息,包括包名、label、icon、占用大小、是系统程序还是第三方程序等信息。

PackageManager pm = this.getPackageManager()// 获得PackageManager对象

Intent mainIntent = new Intent(Intent.ACTION_MAIN, null)

mainIntent.addCategory(Intent.CATEGORY_LAUNCHER)

// 通过查询,获得所有ResolveInfo对象.

List<ResolveInfo>resolveInfos = pm

.queryIntentActivities(mainIntent, PackageManager.MATCH_DEFAULT_ONLY)

如果你希望获取某单个应用程序信息,只需要通过pm对象获取当中的包名,再与你想要获得应用程序的包名比较一下,再获取相应的属性就可经了。

调用Android系统“应用程序信息(Application Info)”界面“Android系统设置->应用程序->管理应用程序”列表下,列出了系统已安装的应用程序。选择其中一个程序,则进入“应用程序信息(Application Info)”界面。这个界面显示了程序名称、版本、存储、权限等信息,并有卸载、停止、清除缓存等按钮,可谓功能不少。如果在编写相关程序时(比如任务管理器)可以调用这个面板,自然提供了很大的方便。那么如何实现呢?

在最新的Android SDK 2.3(API Level 9)中,提供了这样的接口。在文档路径

docs/reference/android/provider/Settings.html#ACTION_APPLICATION_DETAILS_SETTINGS

下,有这样的描述:

public static final String ACTION_APPLICATION_DETAILS_SETTINGSSince: API Level 9

Activity Action: Show screen of details about a particular application.

In some cases, a matching Activity may not exist, so ensure you safeguard against this.

Input: The Intent's data URI specifies the application package name to be shown, with the "package" scheme. That is "package:com.my.app".

Output: Nothing.

Constant Value: "android.settings.APPLICATION_DETAILS_SETTINGS"

就是说,我们只要以android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS作为Action;“package:应用程序的包名”作为URI,就可以用startActivity启动应用程序信息界面了。代码如下:

view plain

Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)

Uri uri = Uri.fromParts(SCHEME, packageName, null)

intent.setData(uri)

startActivity(intent)

但是,在Android 2.3之前的版本,并没有公开相关的接口。

通过查看系统设置platform/packages/apps/Settings.git程序的源码,可以发现应用程序信息界面为InstalledAppDetails。

在这里(2.1)还有这里(2.2),我们可以分别看到Android2.1和Android2.2的应用管理程序(ManageApplications.java)是如何启动InstalledAppDetails的。

view plain

// utility method used to start sub activity

private void startApplicationDetailsActivity() {

// Create intent to start new activity

Intent intent = new Intent(Intent.ACTION_VIEW)

intent.setClass(this, InstalledAppDetails.class)

intent.putExtra(APP_PKG_NAME, mCurrentPkgName)

// start new activity to display extended information

startActivityForResult(intent, INSTALLED_APP_DETAILS)

}

但是常量APP_PKG_NAME的定义并不相同。

2.2中定义为"pkg",2.1中定义为"com.android.settings.ApplicationPkgName"

那么,对于2.1及以下版本,我们可以这样调用InstalledAppDetails:

view plain

Intent i = new Intent(Intent.ACTION_VIEW)

i.setClassName("com.android.settings","com.android.settings.InstalledAppDetails")

i.putExtra("com.android.settings.ApplicationPkgName", packageName)

startActivity(i)

对于2.2,只需替换上面putExtra的第一个参数为"pkg"

综上,通用的调用“应用程序信息”的代码如下:

view plain

private static final String SCHEME = "package"

/**

* 调用系统InstalledAppDetails界面所需的Extra名称(用于Android 2.1及之前版本)

*/

private static final String APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName"

/**

* 调用系统InstalledAppDetails界面所需的Extra名称(用于Android 2.2)

*/

private static final String APP_PKG_NAME_22 = "pkg"

/**

* InstalledAppDetails所在包名

*/

private static final String APP_DETAILS_PACKAGE_NAME = "com.android.settings"

/**

* InstalledAppDetails类名

*/

private static final String APP_DETAILS_CLASS_NAME = "com.android.settings.InstalledAppDetails"

/**

* 调用系统InstalledAppDetails界面显示已安装应用程序的详细信息。 对于Android 2.3(Api Level

* 9)以上,使用SDK提供的接口; 2.3以下,使用非公开的接口(查看InstalledAppDetails源码)。

*

* @param context

*

* @param packageName

*应用程序的包名

*/

public static void showInstalledAppDetails(Context context, String packageName) {

Intent intent = new Intent()

final int apiLevel = Build.VERSION.SDK_INT

if (apiLevel >= 9) { // 2.3(ApiLevel 9)以上,使用SDK提供的接口

intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)

Uri uri = Uri.fromParts(SCHEME, packageName, null)

intent.setData(uri)

} else { // 2.3以下,使用非公开的接口(查看InstalledAppDetails源码)

// 2.2和2.1中,InstalledAppDetails使用的APP_PKG_NAME不同。

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)

}

1、首先在手机的桌面上点击“微信”应用程序的图标,进入到微信后,点击图示图标进入到我的主页。

2、然后进入到我的主页,在功能选项中找到设置,进入设置后,找到并且点击通用。

3、接下来进入到通用,在通用中找到微信存储空间,点击微信存储空间,进入到下一步 *** 作。

4、最后在清理空间里选择管理微信存储空间和使用手机管家,清理手机空间,建议用手机管家清理空间进行清理使手机更流畅,小程序就不会再未响应了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11430783.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存