`

android:installLocation简析

 
阅读更多
在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将被忽略,而不低于Froyo的系统中将使用我们指定的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大时我们应该认真的考虑是否要将程序移动到外部存储介质上以帮助用户节省内存.
分享到:
评论

相关推荐

    解决Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE

    - **默认安装位置**:Android系统允许开发者通过`manifest`文件指定应用的默认安装位置,即内部存储或外部存储(如SD卡)。如果指定的位置没有足够的空间,则会报错。 2. **诊断方法**: - **检查设备存储情况**...

    自动更新apk,xamarin.android 对话框

    &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0.2" package="com.companyname.boshiac.forklift.app" android:installLocation="auto"&gt; ...

    android通过配置文件设置应用安装到SD卡上的方法

    代码如下:android:installLocation=”preferExternal” 这样应用就会被安装在SD卡,不会出现存储空间不足的错误了。 您可能感兴趣的文章:Android SD卡上文件操作及记录日志操作实例分析将文件放到Android模拟器的...

    android 默认安装apk 到sdcard

    同时,为了兼容不同的Android版本,需要在清单文件中声明`android:installLocation`属性: ```xml android:allowBackup="true" android:installLocation="preferExternal" &lt;!-- 这里设置为 "preferExternal" -...

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

    本文实例讲述了Android编程实现应用强制安装到手机内存的方法。分享给大家供大家参考,具体如下: 在Froyo(android 2.2,API ...manifest xmlns:android=http://schemas.android.com/apk/res/android package=string a

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

    本文实例讲述了Android编程实现将应用强制装到手机内存的方法。分享给大家供大家参考,具体如下: ...manifest xmlns:android=http://schemas.android.com/apk/res/android package=string andro

    Android实现系统重新启动的功能

    &lt;manifest xmlns:android=”http://schemas.android.com/apk/res/android” package u201dcom.hzhi.restart” android:versionCode=”1″ android:versionName u201d1.0″ android:installLocation=”...

    android 添加系统权限 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

    eclipse编译出来的apk,安装时报出INSTALL_FAILED_SHARED_USER_INCOMPATIBLE的错误。 原因:apk的AndroidManifest.xml中声明了android:sharedUserId="android.uid.system",但没有相应的签名 解决方案: 1. 找到编译...

    点心美化版通讯录

    &lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&gt; &lt;uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /&gt; &lt;uses-permission android:name="android....

    Android 屏幕唤醒 + 屏幕解锁 + 开机服务监听(android.intent.action.BOOT-COMPLET)

    name="android.permission.WAKE_LOCK"/&gt;&lt;uses-permission android:name="android.permission.DISABLE_KEYGUARD"/&gt;//如需启动应用则添加&lt;uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES...

    Android 出现问题Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER解决办法

    在Android开发过程中,可能会遇到一个常见的安装错误,即“Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER”。这个错误通常出现在尝试安装一个新的APK应用时,如果该应用包含一个与系统或已经安装在设备...

    Android安装应用 INSTALL_FAILED_DEXOPT 问题及解决办法

    The application could not be installed: INSTALL_FAILED_DEXOPT 清除模拟器数据 在AndroidStudio中打开AVD Manager: 使用WipeData清除数据: 调整模拟器内存 使用上面的WipeData还是一样的问题的话,建议重新...

    INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

    问题:INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 解决:android:sharedUserId="android.uid.system" &lt;uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"/&gt;

    INSTALL_FAILED_MISSING_SHARED_LIBRARY 的解决办法

    在进行Android应用开发时,可能会遇到“INSTALL_FAILED_MISSING_SHARED_LIBRARY”的错误提示。此问题通常发生在尝试安装包含特定共享库依赖的应用程序时,而这些依赖未能正确配置或存在设备上。本文将详细介绍如何...

    极光推送Demo

    &lt;action android:name="com.android.vending.INSTALL_REFERRER" /&gt; &lt;action android:name="cn.jiguang.intent.action.MESSAGE_RECEIVED" /&gt; &lt;category android:name="android.intent.category.DEFAULT" /&gt; ...

    android APK install tool

    android APK install tool can install your APK will File to c://install_apks/you3_apk.apk can install P.S Android Phone will to "Debug mode" via ADB Tool Auto Install you APP

    python-for-android:将您的Python应用程序转换为Android APK

    适用于Android的python ... pip install python-for-android (对于develop分支: pip install git+https://github.com/kivy/python-for-android.git ) 测试安装适用于: p4a --version 要构建任何实际的应

Global site tag (gtag.js) - Google Analytics