`

调用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_SETTINGS Since: 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 楼 klwillgoon 2013-06-17  

相关推荐

    获取Android系统程序信息 源代码

    在Android系统中,获取应用程序信息是一项常见的任务,无论是开发者调试应用、系统管理员监控系统状态,还是用户了解设备上的软件详情,都可能需要用到这样的功能。这个名为"获取Android系统程序信息 源代码"的资源...

    android系统文件application fundamentals翻译

    一、Android应用程序结构 Android应用由一系列组件构成,包括Activity、Service、Broadcast Receiver、Content Provider等。Activity是用户界面的入口,处理用户交互;Service在后台执行长期运行的任务,不与用户...

    调用Android系统设置中的Intent

    总的来说,通过Intent调用Android系统设置是Android应用开发中的常见操作,它使开发者能够轻松地引导用户进入系统界面,提供更丰富的用户体验。不过,要注意遵循Android的权限模型,尊重用户隐私,避免不必要的系统...

    android应用程序基础

    Android应用程序框架是构成Android应用程序的基本结构,它定义了应用程序如何与Android操作系统交互以及如何管理和控制应用程序的行为。Android应用开发主要依赖于Java语言,通过调用Android提供的各种API来实现功能...

    android 系统调用安装apk

    4. **启动安装流程**:通过调用`startActivity(intent)`来触发系统默认的应用程序安装界面。 ### 方法二:使用PackageManager进行直接安装 这种方式更加底层,通过`PackageManager`类提供的`installPackage()`方法...

    Android参考源码-获取Android系统程序信息.zip

    总之,“ApplicationList”源码是一个深入了解Android系统应用程序管理和信息获取的好教材。通过学习和分析这个类,开发者不仅可以学会如何获取Android系统的程序信息,还能掌握Android系统层面的编程技巧和最佳实践...

    Android应用源码之 程序启动界面Demo.zip

    这个启动界面通常是在应用程序打开时用户首先看到的,它可能包含品牌标识、加载动画或者简单的欢迎信息,目的是在应用程序完全启动之前提供一个视觉反馈,提升用户体验。 Android应用开发主要基于Java语言,因此...

    android经典书籍-Professional Android 4 Application Development【pdf+代码】

    它详细介绍了如何构建高质量、高性能的Android应用程序,涵盖了从基本概念到高级特性的各个方面。以下是一些主要的知识点: 1. **Android SDK和开发环境**:书中首先引导读者设置Android开发环境,包括安装Android ...

    安卓Android源码——获取系统程序信息.zip

    "安卓Android源码——获取系统程序信息.zip"这个压缩包很可能包含了用于解析和显示系统中安装的应用程序信息的相关代码。下面,我们将深入探讨这一主题,围绕Android源码、系统程序信息的获取以及可能涉及的技术细节...

    Android获取应用程序列表 优化后

    在Android操作系统中,获取应用程序列表是一项常见的任务,无论是为了创建自定义的应用管理界面还是进行其他与应用相关的功能。本文将详细讲解如何优化地获取系统及用户应用程序列表,并探讨相关的关键知识点。 ...

    android application

    在Android平台上,应用程序(Application)是用户与操作系统交互的核心组件,它是所有功能和界面的起点。Android应用由多个组件构成,包括活动(Activity)、服务(Service)、广播接收者(BroadcastReceiver)以及...

    Professional Android 2 Application Development

    这本书详细介绍了如何利用Android平台开发高质量、功能丰富的应用程序,适用于有一定编程基础并希望深入Android开发的专业人士。 在Android 2.0的时代,这本书提供了一系列关键知识点,包括: 1. **Android SDK和...

    安卓 android 应用启动 加载 界面 实现

    在安卓(Android)平台上,应用启动加载界面是用户体验的重要组成部分,它通常出现在应用程序启动时,显示品牌标识或进度条,给用户一个应用正在准备运行的视觉反馈。实现这样的加载界面可以提升应用的专业感,同时...

    andorid SDK之:Application Fundamentals——应用程序基础知识

    ### Android SDK之:Application Fundamentals——应用程序基础知识 #### 概述 在Android开发领域中,了解应用程序的基础构建单元以及它们如何交互至关重要。本篇将详细探讨Android应用程序的基础知识,包括其构建...

    Android系统开发入门

    - **Java框架** (Application Framework): 提供了一组API供开发者调用,简化了应用程序的开发过程。 - **Java应用程序** (Application): 这是最顶层,开发者直接在此层编写应用程序。 #### 四、Android开发工具 ...

    Android获取应用程序名称(ApplicationName)示例

    在Android开发中,有时我们需要获取应用程序的名称,这可能是为了显示在用户界面上,或者用于...这个示例展示了如何在Android中获取并显示应用程序的名称,这对于任何需要在用户界面上展示应用信息的场景都非常有用。

Global site tag (gtag.js) - Google Analytics