Android编程实现应用强制安装到手机内存的方法
作者:lee0oo0 发布时间:2023-11-09 14:00:40
本文实例讲述了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程序设计有所帮助。


猜你喜欢
- 本文实例讲述了WinForm绘制圆角的方法。分享给大家供大家参考。具体实现方法如下:using System;using System.Co
- Android M(6.0)API 23后加入了权限请求设置,APP需要使用某些权限需要主动申请。权限分为3类,一组是Normal权限,无需
- 关键字:spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)应用场景:很多时候我们想要在某个类加载完毕时
- 创建类的对象 = 类的实例化 = 实例化类类和对象的使用(面向对象思想落地的实现):1.创建类,设计类的成员2.创建类的对象3.通过“对象.
- 1. 遍历map方法通过 keySet() 方法获取全部的key值;通过 values() 方法获取全部的value值;通过遍历key值获取
- 本文实例讲述了WinForm实现最小化到系统托盘方法。分享给大家供大家参考。具体分析如下:有个叫NotifyIcon的控件1、建个WinFo
- 基本环境:Android studio3.6NDK:r15c(尽量使用该版本)Opencv3.4.1 android sdk操作:(1)新建
- C#提供了多种操作文件的方案,File类中封装的静态方法,接口封装得比较人性化,隐藏了具体实现的细节,主要包括读取、写入以及追加,这些函数如
- java联调生成测试数据工具类在日常的联调中,我们经常需要准备一定数量的测试数据,用来配合前端测试。当然对于简单的数据类型完全可以通过 JD
- 原理很简单,利用Path画一个图,然后用动画进行播放,播放时间由依赖属性输入赋值与控件内部维护的一个计时器进行控制。控件基本是玩具,无法作为
- MyBatis Example And与Or混合使用(条件1 and 条件2) or ( 条件3 and 条件4)  
- 废话不多说了,直奔主题了。需要两个jar包:commons-fileupload.jarCommons IO的jar包(本文使用common
- MessageFormat本身与语言环境无关,而与用户提供给MessageFormat的模式和用于已插入参数的子格式模式有关,以生成适用于不
- 一、Kotlin 调用 Java1. kotlin 关键字转义java 中的方法或变量 是 kotlin 的关键字时,使用反引号 `` 对关
- 最近开发项目中,有个在屏幕上任意拖动的悬浮窗功能,其实就是利用 WindowManager的api来完成这个需求,具体的实现的功能如下:1.
- 对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理
- 本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下此次扫雷中我们以9乘以9的表格为例,后期可自动调动主要思路:建立两
- 其实以前我对Java的Struts框架没有具体认识,通过这篇文章,真的让我了解了框架的用处,好处。下拉框在Web开发中经常会使用到,下面我们
- 一、为什么会存在动态内存int data=20;//在栈空间上开辟4个字节空间char ch[5]={0};//在栈开辟5个字节连续空间上面
- Java数组声明、创建、初始化一维数组的声明方式:type var[]; 或type[] var;声明数组时不能指定其长度(数组中元素的个数