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

 更新时间:2015年12月12日 10:57: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 人脸检测你一定会遇到的坑

    详解android 人脸检测你一定会遇到的坑

    这篇文章主要介绍了详解android 人脸检测你一定会遇到的坑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Android实现精美的聊天界面

    Android实现精美的聊天界面

    这篇文章主要为大家详细介绍了Android实现精美的聊天界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Android高级开发之性能优化典范

    Android高级开发之性能优化典范

    本文从电量,视图,内存三个性能方面的知识点给大家介绍android高级开发之性能优化的相关知识,希望对大家有所帮助
    2016-05-05
  • Android TextWatcher三个回调以及监听EditText的输入案例详解

    Android TextWatcher三个回调以及监听EditText的输入案例详解

    这篇文章主要介绍了Android TextWatcher三个回调以及监听EditText的输入案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Android实现淘宝选中商品尺寸的按钮组实例

    Android实现淘宝选中商品尺寸的按钮组实例

    这篇文章介绍的是仿淘宝中的选中商品不同尺寸,比如衣服有L、M、XL等等的款式。这时候我们就需要一个button组来进行了,当时这个时候里面的尺寸可能有很多,那怎么办呢?这里我们就肯定要做个自适应的按钮组了,要不然弄出来也没用。
    2016-08-08
  • Android UI组件Spinner下拉列表详解

    Android UI组件Spinner下拉列表详解

    这篇文章主要为大家详细介绍了Android UI组件Spinner下拉列表的实现方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android实现类似360,QQ管家那样的悬浮窗

    Android实现类似360,QQ管家那样的悬浮窗

    用到的就是WindowManager以及WindowManager.LayoutParams,对这个LayoutParams做文章,当设置为属性后,然后,创建一个View,将这个View添加到WindowManager中就行
    2013-06-06
  • Android Jetpack- Paging的使用详解

    Android Jetpack- Paging的使用详解

    这篇文章主要介绍了Android Jetpack- Paging的使用详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Android利用Senser实现不同的传感器

    Android利用Senser实现不同的传感器

    这篇文章主要为大家详细介绍了Android利用Senser实现不同传感器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • Android UI实现单行文本水平触摸滑动效果

    Android UI实现单行文本水平触摸滑动效果

    这篇文章主要为大家详细介绍了Android UI实现单行文本水平触摸滑动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10

最新评论