Android编程实现应用强制安装到手机内存的方法

 更新时间:2015年11月20日 11:42:42   作者:lee0oo0  
这篇文章主要介绍了Android编程实现应用强制安装到手机内存的方法,涉及Android中属性设置的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了Android编程实现应用强制安装到手机内存的方法。分享给大家供大家参考,具体如下:

在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通过设置该属性可以使得开发者以及用户决定程序的安装位置.

android:installLocation隶属于AndroidManifest.XML中的manifest节点.如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="string"
     android:sharedUserId="string"
     android:sharedUserLabel="string resource" 
     android:versionCode="integer"
     android:versionName="string"
     android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
  . . .
</manifest>

android:installLocation可以设置为"auto"、"internalOnly"、"preferExternal"三个值中的任何一个.

auto:程序可能被安装在外部存储介质上(例如:SD Card),但是默认会被安装到手机内存中.当手机内存为空时,程序将被安装到外部存储介质上.当程序安装到手机上后,用户      可以决定把程序放在外部储介质还是内存中.
internalOnly:默认值.当设置为该值时,程序只能被安装在内存中,如果内存为空,则程序将不能成功安装.
preferExternal:将程序安装在外部存储介质上,但是系统不保证程序一定会被安装到外部存储介质上.当外部存储介质不可以或空时,程序将被安装到内存中.程序使用了for      ward-locking机制时也将被安装到内存中,因为外部存储不支持此机制.程序安装后,用户可以自由切换程序应该在外部还是内部存储介质上.

注意:当程序使用了Google Play的Copy Protection特性时,只能安装到内存中.

当程序被安装到外部存储介质时

① .apk文件将被移动到外部存储介质上,但是程序的数据仍然会在内存中

② 保存.apk文件的容器将会使用一个随机生成的密钥进行加密,这样只有安装该程序的设置可以使用存在外部存储介质上的数据.

警告:当外部存储介质被卸载时,安装在该外部存储介质上的程序将立刻被终止掉!

向后兼容性:

声明了android:installLocation,但android:minSdkVersion小于8时,我们使用不低于Froyo的AVD进行编译,这样在低于Froyo的系统中android:installLocation将被忽略,而不低于Fro  yo的系统中将使用我们指定的android:installLocation.

当我们的程序具有如下行为时我们不应该将程序安装到外部存储介质上

① Service

正在运行的服务将被终止,当外部存储介质被重新加载时服务不会被重启.

② Alarm Service

闹钟服务将被取消,开发者必须在外部存储介质重新加载后重新注册闹钟服务.

③ Input Method Engines

输入法将被换成系统输入法,当外部存储介质被重新加载后用户可以通过系统设置来启动我们的输入法

④ Live Wallpapers

我们的动态壁纸将被替换为默认的动态壁纸.外部存储介质重载后,用户可以更换回来.

⑤ Live Folders

我们的动态文件夹将被移出.

⑥ App Widgets

我们的小部件将被移出,通常只有系统重启后我们的小部件才可用.

⑦ Account Managers

使用AccountManager创建的账户将会消失,直至存储介质被重新加载.

⑧ Sync Adapters

只有外部存储介质被重新加载时,我们的同步功能才可用

⑨ Device Administrators

我们的DeviceAdminReceiver将会失效

⑩ 监听开机结束事件

系统会在加载外部存储介质之前发送ACTION_BOOT_COMPLETED广播.因此安装在外部存储介质的程序将不能接受开机广播.

通常,只要我们没有使用上述的特性,我们就可以将我们的程序安装到外部存储介质上.例如,大的游戏程序.当我们的APK文件有几M大时我们应该认真的考虑是否要将程序移动到外部存储介质上以帮助用户节省内存.

希望本文所述对大家Android程序设计有所帮助。

相关文章

  • Android 系统服务TelecomService启动过程原理分析

    Android 系统服务TelecomService启动过程原理分析

    这篇文章主要介绍了Android 系统服务TelecomService启动过程原理分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Android applicationId和包名的区别总结

    Android applicationId和包名的区别总结

    这篇文章主要给大家介绍了关于Android applicationId和包名的区别,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • 解析activity之间数据传递方法的详解

    解析activity之间数据传递方法的详解

    本篇文章是对activity之间数据传递的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • android 实现类似微信缓存和即时更新好友头像示例

    android 实现类似微信缓存和即时更新好友头像示例

    本篇文章主要介绍了android 实现类似微信缓存和即时更新好友头像示例,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • Android中的图片优化完全指南

    Android中的图片优化完全指南

    这篇文章主要给大家介绍了关于Android中图片优化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Android内核源码 在Ubuntu上下载,编译,安装

    Android内核源码 在Ubuntu上下载,编译,安装

    本文主要介绍Android内核源码,想学习深入研究Android的朋友肯定要看看Android内核知识的,这里对下载Android内核源代码的下载,安装,编译做了详细的介绍,有兴趣的小伙伴可以参考下
    2016-08-08
  • Android开发之圆角矩形创建工具RoundRect类定义与用法分析

    Android开发之圆角矩形创建工具RoundRect类定义与用法分析

    这篇文章主要介绍了Android开发之圆角矩形创建工具RoundRect类定义与用法,结合完整实例形式分析了Android圆角矩形工具类的定义与简单使用技巧,需要的朋友可以参考下
    2018-01-01
  • Android开发中如何去掉app标题栏的实现

    Android开发中如何去掉app标题栏的实现

    这篇文章主要介绍了Android开发中如何去掉app标题栏的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Android字体相关知识总结

    Android字体相关知识总结

    最近接到一个需求,大致内容是:全局替换当前项目中的默认字体,并引入 UI 设计师提供的一些新字体。于是对字体做了些研究,把自己的一些心得分享给大家。注意:本文所展示的系统源码都是基于Android-30 ,并提取核心部分进行分析
    2021-06-06
  • ImageView点击可变暗的实例代码(android代码技巧)

    ImageView点击可变暗的实例代码(android代码技巧)

    本文给大家分享一段实例代码给大家介绍ImageView点击可变暗的实例代码,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-02-02

最新评论