“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启动应用程序信息界面了。代码如下:
- Intentintent=newIntent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
- Uriuri=Uri.fromParts(SCHEME,packageName,null);
- intent.setData(uri);
- startActivity(intent);
但是,在Android 2.3之前的版本,并没有公开相关的接口。
在
这里(2.1)还有
这里(2.2),我们可以分别看到
Android2.1和
Android2.2的应用管理程序(ManageApplications.java)是如何启动InstalledAppDetails的。
- privatevoidstartApplicationDetailsActivity(){
- Intentintent=newIntent(Intent.ACTION_VIEW);
- intent.setClass(this,InstalledAppDetails.class);
- intent.putExtra(APP_PKG_NAME,mCurrentPkgName);
- startActivityForResult(intent,INSTALLED_APP_DETAILS);
- }
但是常量APP_PKG_NAME的定义并不相同。
2.2中定义为"pkg",2.1中定义为"com.android.settings.ApplicationPkgName"
那么,对于2.1及以下版本,我们可以这样调用InstalledAppDetails:
- Intenti=newIntent(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"
综上,通用的调用“应用程序信息”的代码如下:
- privatestaticfinalStringSCHEME="package";
- privatestaticfinalStringAPP_PKG_NAME_21="com.android.settings.ApplicationPkgName";
- privatestaticfinalStringAPP_PKG_NAME_22="pkg";
- privatestaticfinalStringAPP_DETAILS_PACKAGE_NAME="com.android.settings";
- privatestaticfinalStringAPP_DETAILS_CLASS_NAME="com.android.settings.InstalledAppDetails";
- publicstaticvoidshowInstalledAppDetails(Contextcontext,StringpackageName){
- Intentintent=newIntent();
- finalintapiLevel=Build.VERSION.SDK_INT;
- if(apiLevel>=9){
- intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
- Uriuri=Uri.fromParts(SCHEME,packageName,null);
- intent.setData(uri);
- }else{
- finalStringappPkgName=(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);
- }
分享到:
相关推荐
应用程序基础Application Fundamentals 4 关键类 4 应用程序组件 5 激活组件:intent 7 关闭组件 7 manifest文件 8 Intent过滤器 8 Activity和任务 10 Affinity(吸引力)和新任务 11 加载模式 12 清理堆栈 13 启动...
Android系统库是指Android操作系统内部提供的一些基本功能或服务的类库,可以帮助应用程序实现常见的任务和操作,如UI设计、数据库管理、网络通信等。常用的Android系统库包括: 1. SDK(Software Development Kit...
根据Android的软件框图,其软件层次结 构自下而上分为以下几个层次: 第一、操作系统层(OS) 第二、各种库(Libraries)和Android 运行环境(RunTime) 第三、应用程序框架(Application Framework) 第四、应用...
Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...
9.3 Android Apk应用信息获取之Activity Manager 215 9.4 解析Packages.xml获取系统信息 218 9.5 Android安全机制 220 9.5.1 Android安全机制简介 220 9.5.2 Android系统安全隐患 222 9.5.3 Android Apk反编译 ...
在开发过程中,我们常常需要一个退出功能,来退出该应用的所有Activity,本篇文章主要介绍了Android 退出多Activity的application的方式,有兴趣的可以了解一下。
应用程序基础Application Fundamentals 4 关键类 4 应用程序组件 5 激活组件:intent 7 关闭组件 7 manifest文件 8 Intent过滤器 8 Activity和任务 10 Affinity(吸引力)和新任务 11 加载模式 12 清理...
即使用户切到另一应用程序,服务仍可以在后台运行。 服务的概念 服务的创建方式与创建Activity类似,只需要继承Service类,然后在清单文件中注册即可。 1、创建服务类 public class MyService extends Service 2、在...
答:ANR(Application Not Responding):应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应的对话框 避免ANR:Android应用程序通常运行在一个单独的线程里面,称谓主线程,...
2.3 运行和调试android应用程序 2.3.1 连接设备 2.3.2 创建一个android虚拟设备 2.3.3 运行应用程序 2.3.4 调试应用程序 2.3.5 logcat和ddms 2.3.6 使用adb 2.4 小结 第3章 游戏开发基础 3.1 游戏...
应用程序基础Application Fundamentals 4 关键类 4 应用程序组件 5 激活组件:intent 7 关闭组件 7 manifest文件 8 Intent过滤器 8 Activity和任务 10 Affinity(吸引力)和新任务 11 加载模式 12 清理堆栈 13 启动...
Android的静默安装似乎是一个很有趣很诱人的东西,但是,用普通做法,如果手机没有root权限的话,似乎很难实现静默安装,因为Android并不提供显示的Intent调用,一般是通过以下方式安装apk: Intent intent = new ...
安卓开发观察者模式应用-一个service通知多个activity更新ui的实现, service与activity的交互: 1.接口回调 2.自定义广播 3.观察者模式
4.1 定义一个Android应用程序: 清单文件 77 4.1.1 <manifest>元素 78 4.1.2 <application>元素 79 4.1.3 <activity>元素 80 4.1.4 <uses-permission>元素 82 4.1.5 <uses...
13.2.2 创建WAVE播放器Android应用程序 306 13.2.3 创建WAVE播放器主Activity 306 13.2.4 实现WAVE Aduio播放 310 13.3 运行WAVE Audio Player 327 13.4 小结 328 第14章 程序概要分析和NEON优化 329 14.1 用...
使用方式compile 'com.wanjian:sak:0.0.3'android 4.0及以上用户直接在application的onCreate中调用 com.wanjian.sak.LayoutManager.init(Application context) ,其他版本可以在activity的onResume中调用...
} @Override //在重新进入可视生命周期前被调用,载入界面所需要的更改信息 public void onRestart() { super. onRestart(); Log.i(TAG,"(4) onRestart()");} @Override //在活动生命周期结束时被调用,用于保存持久...