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

作者:lee0oo0 时间:2022-09-09 23:02:08 

本文实例讲述了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,应用,安装
0
投稿

猜你喜欢

  • 解析C# 程序结构

    2021-11-15 05:22:59
  • 自定义一个异常类模板的简单实例

    2022-04-30 02:53:14
  • 浅谈Android轻量级的数据缓存框架RxCache

    2023-12-22 14:01:30
  • java中如何使用HttpClient调用接口

    2021-10-13 11:19:14
  • android 使用kotlin 实现点击更换全局语言(中日英切换)

    2023-11-18 03:08:50
  • Android利用ViewDragHelper轻松实现拼图游戏的示例

    2022-07-10 08:57:06
  • Java 反射机制知识详细介绍及总结

    2023-12-15 01:08:15
  • Android5.0中多种水波纹效果的实现代码

    2023-09-23 04:42:53
  • Kotlin与java8的SAM转换对比(进阶)

    2023-05-15 11:50:35
  • Android开发中多进程共享数据简析

    2023-10-10 05:17:04
  • C#中HttpWebRequest的用法详解

    2023-06-18 22:39:27
  • JAVA导出EXCEL表格的实例教学

    2021-11-21 01:47:28
  • c# String扩展 让你在PadLeft和PadRight时不再受单双字节问题困扰

    2022-09-06 12:11:54
  • 很棒的Android弹幕效果实例

    2022-07-30 17:41:40
  • 用AdapterViewFlipper轻松完成图片轮播

    2021-12-08 12:50:47
  • Android中ToggleButton开关状态按钮控件使用方法详解

    2022-11-10 06:24:35
  • C#实现批量更改文件名称大小写或扩展名

    2023-03-25 02:20:50
  • Android仿微信QQ设置图形头像裁剪功能

    2022-06-21 10:12:25
  • Flutter实现底部和顶部导航栏

    2021-10-26 20:15:53
  • Android编程中activity启动时出现白屏、黑屏问题的解决方法

    2023-03-09 06:15:03
  • asp之家 软件编程 m.aspxhome.com