`
zhouxiaoli521
  • 浏览: 561586 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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启动应用程序信息界面了。代码如下:

[java] view plaincopy
  1. Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);  
  2. Uri uri = Uri.fromParts(SCHEME, packageName, null);  
  3. intent.setData(uri);  
  4. startActivity(intent);  
 
但是,在Android 2.3之前的版本,并没有公开相关的接口。
通过查看系统设置platform/packages/apps/Settings.git程序的源码,可以发现应用程序信息界面为InstalledAppDetails。
这里(2.1)还有这里(2.2),我们可以分别看到Android2.1Android2.2的应用管理程序(ManageApplications.java)是如何启动InstalledAppDetails的。
[java] view plaincopy
  1. // utility method used to start sub activity  
  2. private void startApplicationDetailsActivity() {  
  3.     // Create intent to start new activity  
  4.     Intent intent = new Intent(Intent.ACTION_VIEW);  
  5.     intent.setClass(this, InstalledAppDetails.class);  
  6.     intent.putExtra(APP_PKG_NAME, mCurrentPkgName);  
  7.     // start new activity to display extended information  
  8.     startActivityForResult(intent, INSTALLED_APP_DETAILS);  
  9. }  
但是常量APP_PKG_NAME的定义并不相同。
2.2中定义为"pkg",2.1中定义为"com.android.settings.ApplicationPkgName"
那么,对于2.1及以下版本,我们可以这样调用InstalledAppDetails:
[java] view plaincopy
  1. Intent i = new Intent(Intent.ACTION_VIEW);                  
  2. i.setClassName("com.android.settings","com.android.settings.InstalledAppDetails");  
  3. i.putExtra("com.android.settings.ApplicationPkgName", packageName);   
  4. startActivity(i);  
对于2.2,只需替换上面putExtra的第一个参数为"pkg"
 
 
综上,通用的调用“应用程序信息”的代码如下:
[java] view plaincopy
  1. private static final String SCHEME = "package";  
  2. /** 
  3.  * 调用系统InstalledAppDetails界面所需的Extra名称(用于Android 2.1及之前版本) 
  4.  */  
  5. private static final String APP_PKG_NAME_21 = "com.android.settings.ApplicationPkgName";  
  6. /** 
  7.  * 调用系统InstalledAppDetails界面所需的Extra名称(用于Android 2.2) 
  8.  */  
  9. private static final String APP_PKG_NAME_22 = "pkg";  
  10. /** 
  11.  * InstalledAppDetails所在包名 
  12.  */  
  13. private static final String APP_DETAILS_PACKAGE_NAME = "com.android.settings";  
  14. /** 
  15.  * InstalledAppDetails类名 
  16.  */  
  17. private static final String APP_DETAILS_CLASS_NAME = "com.android.settings.InstalledAppDetails";  
  18. /** 
  19.  * 调用系统InstalledAppDetails界面显示已安装应用程序的详细信息。 对于Android 2.3(Api Level 
  20.  * 9)以上,使用SDK提供的接口; 2.3以下,使用非公开的接口(查看InstalledAppDetails源码)。 
  21.  *  
  22.  * @param context 
  23.  *  
  24.  * @param packageName 
  25.  *            应用程序的包名 
  26.  */  
  27. public static void showInstalledAppDetails(Context context, String packageName) {  
  28.     Intent intent = new Intent();  
  29.     final int apiLevel = Build.VERSION.SDK_INT;  
  30.     if (apiLevel >= 9) { // 2.3(ApiLevel 9)以上,使用SDK提供的接口  
  31.         intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);  
  32.         Uri uri = Uri.fromParts(SCHEME, packageName, null);  
  33.         intent.setData(uri);  
  34.     } else { // 2.3以下,使用非公开的接口(查看InstalledAppDetails源码)  
  35.         // 2.2和2.1中,InstalledAppDetails使用的APP_PKG_NAME不同。  
  36.         final String appPkgName = (apiLevel == 8 ? APP_PKG_NAME_22  
  37.                 : APP_PKG_NAME_21);  
  38.         intent.setAction(Intent.ACTION_VIEW);  
  39.         intent.setClassName(APP_DETAILS_PACKAGE_NAME,  
  40.                 APP_DETAILS_CLASS_NAME);  
  41.         intent.putExtra(appPkgName, packageName);  
  42.     }  
  43.     context.startActivity(intent);  
  44. }  
  http://blog.csdn.net/ZhengZhiRen/article/details/6159750
分享到:
评论

相关推荐

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

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

    android 系统调用安装apk

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

    android系统文件application fundamentals翻译

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

    android应用程序基础

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

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

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

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

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

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

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

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

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

    android application

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

    调用Android系统设置中的Intent

    在Android应用开发中,有时需要引导用户进入系统设置或者特定信息界面进行操作,例如调整网络设置、查看电池信息等。这种情况下,我们可以利用Intent来实现系统级别的跳转。Intent是Android系统中的一种消息对象,...

    调用系统的复制功能

    剪贴板是一个临时存储区域,可以存储用户复制的文本、图像、文件等信息,以便在其他应用程序或位置进行粘贴。在Windows、macOS和Linux等操作系统中,都有内置的剪贴板机制。 1. **Windows系统**: 在Windows环境下...

    Professional Android 2 Application Development

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

    android studio调用API登录注册DEMO

    API(Application Programming Interface)是应用程序接口,允许不同的软件系统之间进行数据交换和功能调用。在这个DEMO中,我们将探讨以下几个关键知识点: 1. **网络请求库**:在Android中,由于安全性和性能考虑...

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

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

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

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

    Android Studio登录界面和跳转 MyApplication3.zip

    本项目"Android Studio登录界面和跳转 MyApplication3.zip"是一个简单的示例,展示了如何在Android应用中实现登录界面、页面跳转以及进度条功能,并且还包含了拨打电话的功能。 1. **登录界面设计**: - 在Android...

    Android开发指南中文版-----应用程序框架

    #### 一、应用程序基础(Application Fundamentals) 在Android开发中,应用程序的基础架构包括以下几个核心部分: ##### 关键类 Android应用的核心是几个关键类: 1. **Activity**:负责处理用户交互并展示UI。 2. ...

Global site tag (gtag.js) - Google Analytics