Android如何编程设置APP安装位置(外部存储或内部存储)?

Beginning with API Level 8, you can allow your application to be installed on the external storage (for example, the device‘s SD card). This is an optional feature you can declare for your application with theandroid:installLocation
manifest attribute. If you do not declare this attribute, your application will be installed on the internal storage only and it cannot be moved to the external storage.

To allow the system to install your application on the external storage, modify your manifest file to include theandroid:installLocation
attribute in the <manifest> element, with a value of either "preferExternal" or "auto". For example:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="preferExternal"
    ... >

If you declare "preferExternal", you request that your application be installed on the external storage, but the system does not guarantee that your application will be installed on the external storage. If the external storage is full, the
system will install it on the internal storage. The user can also move your application between the two locations.

If you declare "auto", you indicate that your application may be installed on the external storage, but you don‘t have a preference of install location. The system will decide where to install your application based on several factors. The user
can also move your application between the two locations.

When your application is installed on the external storage:

  • There is no effect on the application performance so long as the external storage is mounted on the device.
  • The .apk file is saved on the external storage, but all private user data, databases, optimized.dex files, and extracted native code are saved on the internal device memory.
  • The unique container in which your application is stored is encrypted with a randomly generated key that can be decrypted only by the device that originally installed it. Thus, an application installed on an SD card works for only one device.
  • The user can move your application to the internal storage through the system settings.

拣重点说一下这篇文章。这篇技术文档主要核心内容是讲,从Android API Level 8开始,Android APP开发者可以在自己的APP中编程设置APP安装的位置:安装在外置/外部扩展存储卡上(比如设备上用户插入的扩展SD卡)。这一特色的实现,只需在Android的manifest设置:android:installLocation 的属性值。如果开发者没有设置这一值,那么,Android系统将会把你的APP安装在内置/内部存储中并且不允许被移动到外部/外置存储。

因此,为了能让系统把你的APP安装在外部/外置扩展存储中,你需要在manifest修改android:installLocation 的属性值,把android:installLocation
设置为"preferExternal" o或者"auto"。

如果你声明了"preferExternal"(android:installLocation= "preferExternal",),意即为要求系统将你的APP安装在外部/外置扩展存储,但是系统并一定总是这么做。假设外部/外置存储已满,系统仍然会将你的APP安装在内部/内置存储。当用户安装了你的APP后,用户可以把你的APP在外部/外置和内部/内置存储之间来回移动。

如果你声明了 "auto"(android:installLocation ="auto"),你意图让系统把你的APP安装在外部/外置存储,但是你没有对安装位置有特别偏好。所以最终还是由系统综合考量若干因素然后决定你的APP安装的位置,同时,用户仍然可以自主的在外部和内部存储之间来回移动你的APP。

更多其他详细细节内容,请看原始谷歌官方文档,文档链接地址:http://developer.android.com/guide/topics/data/install-location.html#Compatiblity

时间: 2024-10-07 22:13:19

Android如何编程设置APP安装位置(外部存储或内部存储)?的相关文章

Android内存解析(二)— 详解内存,内部存储和外部存储

总述 觉得十分有必要搞清楚内存,内部存储和外部存储的区别,还有我们在开发中真正将数据存在了手机的哪儿. 先提一个问题:手机设置的应用管理中,每个App下都有清除数据和清除缓存,清除的分别是哪里的数据? 一   内存,内部存储和外部存储 1. 可对Android手机存储空间做如下划分: 整个存储空间分为内部存储和外部存储两部分,内部存储中又包含RAM和ROM等部分. 2. 具体概念区分 内部存储,即InternalStorage,也常说内置存储卡,这是手机内置的存储空间,出厂时就被确定,是手机的一

android数据存储_内部存储

源码下载(免下载积分):下载 你可以直接存储数据到内部存储中,默认情况下,文件存储到内部存储中是私有的,不能被 其他程序访问,当卸载应用程序,这些文件会被移除. 创建并写入数据可以有两种方法: 使用java中的相关的方法, 使用android.content中的相关方法,  调用 openFileOutput(),并返回FileOutputStream对象 调用FileOutputStream对象的write()方法 关闭流 读文件也是基本相同的方式. 在读文件有一点小技巧:如果想在编译时保存一

android数据储存之应用安装位置

原文地址:http://developer.android.com/guide/topics/data/install-location.html#Compatiblity 从API8開始,你能够将你的应用安装在外部储存.这是一个可选的特征,你能够在你的应用的manifest中声明:android:installLocation属性.假设你不声明这个属性,你的应用程序将会被安装在内部储存,而且不能被移到外置储存. <manifest xmlns:android="http://schema

app安装位置声明

AndroidManifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="app3.myapplication" android:installLocation="auto"> android:installLocation=["auto" | "internalOnly"

Android修改应用的默认安装位置

<span style="font-size:14px;"><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Google默认的PackageManager,会读取应用AndroidManifest.xml的对应定义</span><span style="font-family

Android数据存储之内部存储、外部存储

首先来介绍下什么是内部存储? 在Android平台下,有着自己独立的数据存储规则,在windows平台下,应用程序可以自由的或者在特定的访问权限基础上访问或修改其他应用程序下的文件资源. 但是在Android平台下,一个应用程序所有的数据都是对外私有的,只有应用程序自己本身才可以访问. 当应用程序被安装到系统中后,其所在的包会有一个文件夹用于存放自己的数据,只有这个应用程序才有对这个文件夹的写入权限,这个私有的数据文件位于Android/data/data目录下. 读取内部数据可以使用openF

android 8未知来源app安装

Android8.0的诸多新特性中有一个非常重要的特性:未知来源应用权限 以前安装未知来源应用的时候一般会弹出一个弹窗让用户去设置允许还是拒绝,并且设置为允许之后,所有的未知来源的应用都可以被安装. Android8.0的变化是,未知应用安装权限的开关被除掉,取而代之的是未知来源应用的管理列表,需要在里面打开每个应用的未知来源的安装权限.Google这么做是为了防止一开始正经的应用后来开始通过升级来做一些不合法的事情,侵犯用户权益. 当你的应用直接适配到Android8之后,内部启动应用安装是会

[Android教程]EditText设置/隐藏光标位置、选中文本和获取/清除焦点

有时候需要让光标显示在EditText的指定位置或者选中某些文本.同样,为了方便用户输入以提升用户体验,可能需要使EditText获得或失去焦点. 1. 设置光标到指定位置 EditText et = (EditText) findViewById(R.id.etTest); et.setSelection(2); PS:当内容过多时,可通过设置光标位置来让该位置的内容显示在屏幕上. 2. 隐藏光标 EditText et = (EditText) findViewById(R.id.etTes

修改 Android Studio 模拟器的默认安装位置

只需要在环境变量中配置 ANDROID_SDK_HOME 为你想要存放模拟器的位置即可 原文地址:https://www.cnblogs.com/GetcharZp/p/12202629.html