ZNDS智能电视网 推荐当贝市场

TV应用下载 / 资源分享区

软件下载 | 游戏 | 讨论 | 电视计算器

综合交流 / 评测 / 活动区

交流区 | 测硬件 | 网站活动 | Z币中心

新手入门 / 进阶 / 社区互助

新手 | 你问我答 | 免费刷机救砖 | ROM固件

查看: 13811|回复: 0
上一主题 下一主题
[教程]

【转】Android应用及应用管理

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-28 16:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
9      AndroidManifest.xml是Android应用的描述文件,它描述了该应用的相关信息,主要包括以下各个元素。      指定本应用内java主程序包的包名。当没有指定apk的文件名时,编译后产生程序包将以此命名。本包名应当在Android系统运行时唯一。      指定本应用程序所授予的信任级别,目前有的认证级别有platform(system)、shared、media以及应用自定义的认证。不同的认证可以享受不同的权限。      权限组的定义是为了描述一组具有共同特性的权限。Android系统中预订了一些组,它们是:android.permission-group.COST_MONEYandroid.permission-group.MESSAGESandroid.permission-group.MESSAGESandroid.permission-group.PERSONAL_INFOandroid.permission-group.LOCATIONandroid.permission-group.NETWORKandroid.permission-group.ACCOUNTSandroid.permission-group.HARDWARE_CONTROLSandroid.permission-group.PHONE_CALLSandroid.permission-group.SYSTEM_TOOLSandroid.permission-group.DEVELOPMENT_TOOLS   
      从字面意思我们就可以理解每个组的特性。具体含义可以参考SDK文档。      权限用来描述是否拥有做某件事的权力。Android系统中权限是分级的,前分为普通级别(Normal),危险级别(dangerous),签名级别(signature)和系统/签名级别(signature or system)。      系统中所有预定义的权限根据作用的不同,分别属于不同的级别。      对于普通和危险级别的权限,我们称之为低级权限,应用申请即授予。其他两级权限,我们称之为高级权限或系统权限,应用拥有platform级别的认证才能申请。      当应用试图在没有权限的情况下做受限操作,应用将被系统杀掉以警示。      系统应用可以使用任何权限。权限的声明者可无条件使用该权限。      目前Android系统定义了许多权限,通过SDK文档用户可以查询到哪些操作需要哪些权限,然后按需申请。      权限树的设置是为了统一管理一组权限,声明于该树下的权限所有者归属该应用。系统提供了API,应用可以在运行时动态添加。   
    Ø PackageManager.addPermission()      Android系统中,安装应用时不能指定安装目录,所有的应用都只能装在预置文件夹下。      Android系统支持数种安装方式,而播思通讯的Ophone平台在此基础上支持更多方式。      Android系统中,应用安装包.apk文件属于默认支持的文件类型,它的的mime type被定义为"application/vnd.android.package-archive"。      系统内置了安装工具来解析并安装.apk文件。你可以从OPhone平台的文件管理器中找到对应安装包,点击即可启动安装步骤。这里给出了相应的代码,有兴趣的开发者可以尝试使用。Intent apkintent =  Intent(Intent.ACTION_VIEW);  Uri puri = Uri.fromFile( File(path)); //path is the path of source apk apkintent.setDataAndType(puri, "application/vnd.android.package-archive"); startActivity(apkintent);  
   
      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系统同样支持多种卸载方式。      使用预置卸载工具      系统内置了卸载工具。这里给出了启动代码,执行后即可看到卸载步骤:Uri packageURI = Uri.parse("package:"+packageName); Intent uninstallIntent =  Intent(Intent.ACTION_DELETE, packageURI); startActivity(uninstallIntent);         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系统组件介绍
下一篇:android layout_weight讲解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|新帖|标签|软件|Sitemap|ZNDS智能电视网 ( 苏ICP备2023012627号 )

网络信息服务信用承诺书 | 增值电信业务经营许可证:苏B2-20221768 丨 苏公网安备 32011402011373号

GMT+8, 2025-6-4 04:55 , Processed in 0.132879 second(s), 15 queries , Redis On.

Powered by Discuz!

监督举报:report#znds.com (请将#替换为@)

© 2007-2025 ZNDS.Com

快速回复 返回顶部 返回列表