AndroidManifest.xml
AndroidManifest.xml是Android应用的描述文件,它描述了该应用的相关信息,主要包括以下各个元素。
包名(package)
指定本应用内java主程序包的包名。当没有指定apk的文件名时,编译后产生程序包将以此命名。本包名应当在Android系统运行时唯一。
认证(certificate)
指定本应用程序所授予的信任级别,目前有的认证级别有platform(system)、shared、media以及应用自定义的认证。不同的认证可以享受不同的权限。
权限组(permission-group)
权限组的定义是为了描述一组具有共同特性的权限。Android系统中预订了一些组,它们是:
· android.permission-group.COST_MONEY
· android.permission-group.MESSAGES
· android.permission-group.MESSAGES
· android.permission-group.PERSONAL_INFO
· android.permission-group.LOCATION
· android.permission-group.NETWORK
· android.permission-group.ACCOUNTS
· android.permission-group.HARDWARE_CONTROLS
· android.permission-group.PHONE_CALLS
· android.permission-group.SYSTEM_TOOLS
· android.permission-group.DEVELOPMENT_TOOLS
从字面意思我们就可以理解每个组的特性。具体含义可以参考SDK文档。
权限(permission)
权限用来描述是否拥有做某件事的权力。Android系统中权限是分级的,前分为普通级别(Normal),危险级别(dangerous),签名级别(signature)和系统/签名级别(signature or system)。
系统中所有预定义的权限根据作用的不同,分别属于不同的级别。
对于普通和危险级别的权限,我们称之为低级权限,应用申请即授予。其他两级权限,我们称之为高级权限或系统权限,应用拥有platform级别的认证才能申请。
当应用试图在没有权限的情况下做受限操作,应用将被系统杀掉以警示。
系统应用可以使用任何权限。权限的声明者可无条件使用该权限。
目前Android系统定义了许多权限,通过SDK文档用户可以查询到哪些操作需要哪些权限,然后按需申请。
权限树(permission-tree)
权限树的设置是为了统一管理一组权限,声明于该树下的权限所有者归属该应用。系统提供了API,应用可以在运行时动态添加。
Ø PackageManager.addPermission()
应用安装
Android系统中,安装应用时不能指定安装目录,所有的应用都只能装在预置文件夹下。
Android系统支持数种安装方式,而播思通讯的Ophone平台在此基础上支持更多方式。
<使用预置安装工具
Android系统中,应用安装包.apk文件属于默认支持的文件类型,它的的mime type被定义为"application/vnd.android.package-archive"。
系统内置了安装工具来解析并安装.apk文件。你可以从OPhone平台的文件管理器中找到对应安装包,点击即可启动安装步骤。这里给出了相应的代码,有兴趣的开发者可以尝试使用。
view plaincopy to clipboardprint?
1. Intentapkintent=newIntent(Intent.ACTION_VIEW);finalUripuri=Uri.fromFile(newFile(path));//pathisthepathofsourceapkapkintent.setDataAndType(puri,"application/vnd.android.package-archive");startActivity(apkintent);
Intent apkintent = new Intent(Intent.ACTION_VIEW); final Uri puri = Uri.fromFile(new File(path)); //path is the path of source apk apkintent.setDataAndType(puri, "application/vnd.android.package-archive"); startActivity(apkintent);
使用API安装
Android系统提供了安装应用的API:PackageManager.installPackage(final Uri packageURI,
final IPackageInstallObserver observer, final int flags);
· uri给出了原文件的地址
· observer实现了回调函数packageInstalled(final String packageArchiveName, final int returnCode) 以检查安装是否成功
· flags提供安装标识。Android平台提供的标识有:
1.PackageManager.FORWARD_LOCK_PACKAGE = 0x00000001
标识本应用属于受限应用,应用将会被安装到保护目录,只有该应用可以访问代码段和不属于resource的asset资源。
2.PackageManager.REPLACE_EXISTING_PACKAGE = 0x00000002;
应用如已存在,则先删除再安装。
3.PackageManager.SDCARD_PACKAGE = 0x00000004;
由OPhone平台扩展,标识该应用安装目录为存储卡,默认为data分区。
因为手机中data分区大小有限,因此OPhone平台默认将应用装到存储卡上。
本API需要"android.permission.INSTALL_PACKAGES"权限,该权限属于签名级别,因此只有系统级别的应用程序才能使用。
拷贝即安装
Android支持拷贝即安装的方式,即将安装包拷贝到预置安装目录即可自动安装,但所有的预置目录对于用户不可见。
OPhone平台扩展后,用户可将安装包拷入存储卡的app目录下,系统将监控该文件夹,检测到新的安装文件后自动安装。
这种方式适合一次安装大量应用,但是也有坏处。一是无法知道哪些应用安装成功,哪些安装失败, 二是安装失败的应用将会作为垃圾存放在预置目录中,在系统启动时延长启动时间,三是过多的应用可能将data分区的空间占用过多,影响系统的正常使用。
安装步骤
· 解析安装包是否合法,如果合法即加载应用,如果非法即放弃安装
· 取出代码段,放入/data/dalvik-cache目录
· 建立/data/data/包名的文件夹,以存放用户数据
· 将安装包携带的lib放入/data/data/包名/lib中
· 以上步骤完成后将安装包拷到安装目录
· 加载该应用信息
应用卸载
Android系统同样支持多种卸载方式。
使用预置卸载工具
系统内置了卸载工具。这里给出了启动代码,执行后即可看到卸载步骤:
view plaincopy to clipboardprint?
1. UripackageURI=Uri.parse("package:"+packageName);IntentuninstallIntent=newIntent(Intent.ACTION_DELETE,packageURI);startActivity(uninstallIntent);
Uri packageURI = Uri.parse("package:"+packageName); Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI); startActivity(uninstallIntent);
使用API卸载
Android提供了卸载应用的标准API:PackageManager().deletePackage(String packageName, IPackageDeleteObserver observer, int flags);
1. observer实现了回调函数packageDeleted(boolean succeeded)以检查卸载是否成功
2. flags提供卸载标识。Android平台提供的标识有
PackageManager.DONT_DELETE_DATA = 0x00000001;
标识卸载时是否同时删除用户数据。
本API需要"android.permission.DELETE_PACKAGES"权限,该权限属于签名级别,因此只有系统级别的应用程序才能使用。
删除即卸载
对应于拷贝即安装,系统同样支持删除即卸载功能。当用户删除/sdcard/app目录下安装包时,系统将自动检测到删除事件并卸载对应应用。
本方法适合一次删除大量应用。
卸载步骤
· 删除代码段
· 如果需要删除用户数据,则删除
· 建立/data/data/包名的文件夹,以存放用户数据
· 删除应用信息
· 删除安装包
应用使用
应用安装后即处于可用状态。对于系统中所有应用,从管理层面分为信息管理和应用调度两部分;从应用自身角度分为去激活与激活两种状态。
分享到:
相关推荐
什么是Android应用? PackageManager相关 ActivityManager相关
主要信息可能包括应用的名称、图标、版本号等基本信息,这些信息可以从AndroidManifest.xml文件中获取,该文件是每个Android应用的核心配置文件。详细信息可能涉及权限、安装日期、占用空间等,这些信息则可以通过...
Android应用程序在运行的时候,资源管理器AssetManager和Resources会根据当前的机器设置,即屏幕大小、密度、方向,以及国家、地区语言的信息,查找正确的资源,并且进行解析,最后将它们渲染在UI上。这个PPT讲...
通过这个项目,初学者不仅可以学习到Android Studio的使用,还能深入理解Android应用的架构设计、UI布局、网络编程、数据存储、多线程和异步处理、权限管理等多个核心知识点。此外,还可以接触到Android的生命周期、...
【Android应用管理器详解】 Android应用管理器是Android操作系统中不可或缺的一部分,它允许用户方便地管理设备上的应用程序,包括安装、卸载、备份、更新等操作。本文将深入探讨一个现代、简便且可定制的Android...
在本资源"android应用锁的实现"中,我们可能找到一个简单实现这一功能的示例代码。以下是关于Android应用锁实现的一些关键知识点: 1. **权限管理**:在Android系统中,为了实现应用锁,首先需要获取相应的权限。...
1. **Android应用程序框架**:Android系统基于Linux内核,其应用程序框架提供了丰富的API接口,使得开发者可以方便地创建和管理应用。此项目利用了这些API来实现应用管理功能。 2. **ActivityManagerService**:...
《Android应用开发详解》这本书是为初学者量身打造的一本指南,旨在深入浅出地介绍Android应用开发的各个环节。Android开发是一个庞大且复杂的领域,涵盖了许多不同的技术和工具,但本书将带你逐步走进这个领域,从...
Android应用源码11套安卓源码合集: Android Gps日志记录程序源码.rar Android listview 滑动删除(具体效果360手机卫士后台通知).rar Android MP3播放器,带卡拉OK字幕.rar Android “遇见”android应用源码.rar ...
《Android应用程序开发(第三版)》是由王向辉、张国印、沈洁三位专家编著的教材,这本书深入浅出地介绍了Android平台上的应用开发技术。课件源程序是学习此书的重要辅助资料,提供了丰富的实例和练习,帮助读者更好...
在Android系统上开发一款日程管理应用是一项涉及多个技术领域的工作。这个项目主要涵盖了数据库操作、闹钟提醒机制以及用户界面的设计与交互。...通过这样的项目,可以深入学习并掌握Android应用开发的核心技能。
宠物管理Android应用程序后端基于SSM实现宠物管理Android应用程序后端基于SSM实现宠物管理Android应用程序后端基于SSM实现宠物管理Android应用程序后端基于SSM实现宠物管理Android应用程序后端基于SSM实现宠物管理...
Android手机应用管理源码,一个安卓手机上的应用管理程序,附有完整的源代码,Android的环境真不好调啊,没抓到运行截图,Android达人自己下载源码摸索吧,这个软件不但可以却手机上的应用进行管理,还具备进程管理...
在Android平台上,应用管理器是系统中不可或缺的一部分,它允许用户查看、管理、卸载以及组织设备上的应用程序。本文将深入探讨"android应用管理器源码"中的关键知识点,为Android初学者提供一个宝贵的资源。 1. **...
在Android系统中,应用管理是核心功能之一,它涉及到应用程序的安装、卸载、更新、权限控制等多个方面。本文将深入解析"android应用管理源码"中的关键知识点,帮助开发者理解Android系统的内部运作机制。 首先,...
SDK(Software Development Kit)包含了开发Android应用所需的各种工具,如SDK Manager用于下载和管理Android平台版本、工具和库,AVD Manager创建和管理虚拟设备,以及adb(Android Debug Bridge)用于设备通信和...
《Android应用开发完全自学手册》是一本全面介绍Android应用开发的指南,涵盖了从基础到进阶的各个环节。这本书旨在帮助初学者系统地学习并掌握Android应用的开发技能,通过源代码解析来提升实践能力。 第1章:...
通过这个源码分析,我们可以深入了解Android应用的生命周期、权限管理、UI设计、数据存储以及与系统服务的交互等多个方面。以下是对"Android应用源码之软件管理器.zip"中可能涉及的关键知识点的详细说明: 1. **...
Android应用案例开发大全...详细介绍了3D动态壁纸、LBS类应用、导航与百度地图二次开发、理财类应用、餐饮行业应用、校园辅助应用、音乐休闲应用、新闻发布管理应用、休闲益智类3D/2D游戏等各类Android应用程序的开发。
悬浮窗,大家应该也不陌生,凌驾于应用之上的一个小弹窗,实现上很简单,就是添加一个系统级别的窗口,Android中通过WindowManagerService( WMS)来管理所有的窗口,对于WMS来说,管你是Activity、Toast、Dialog,...