问题描述
当安装Android应用时,在“App Info”页面中的“移到SD卡”按钮是否可用取决于应用的某些特性。本文讨论的是系统如何检测一个应用是否可以被移动到外部存储,以及相应的按钮为什么会出现或消失。
解决方案
方案1:分析Manifest.xml
文件
要确定一个应用程序是否可以在安装后转移至外部存储,请查看该应用的Manifest.xml
配置文件。特别是要检查<application>
标签下的android:installLocation
属性:
<application
android:icon="@drawable/app_icon"
android:label="App Label"
android:allowBackup="true"
android:supportsRtl="true"
android:installLocation="auto|preferExternal|internalOnly">
...
</application>
android:installLocation
:- 默认值为
internalOnly
,表示应用只能安装在内部存储上。 - 若设置为
auto
(或不指定),则由系统根据当前设备环境自动选择最佳的存储选项。 preferExternal
指定了如果有可能的话应用可以被移动到外部存储。
若此属性值为internalOnly
,则表示该应用程序不能被移至SD卡。因此,在“App Info”页面中不会显示“移到SD卡”的按钮。
方案2:程序检测方法
虽然直接从Manifest.xml配置确定可能较为直观明确,但也可通过编程方式检查:
- 在应用运行时使用以下代码来查询:
import android.content.pm.ApplicationInfo;
import android.util.Log;
public boolean canMoveToExternalStorage() {
ApplicationInfo appInfo = getPackageManager().getApplicationInfo(
packageName, 0);
return (appInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0;
}
- 如果返回
true
,表示当前的应用支持在安装后移动至外部存储。
若返回结果为false
,则不能移动。
以上两种方法均可以用来判断某一应用是否允许被移至SD卡。如果应用的Manifest未指明installLocation=""
字段,则默认采用自动选择的方式;但实际的最终决定权仍然在于系统和其当前对存储媒体的支持情况。
另见
如果有更具体的情况或者遇到相似问题,可以参考已有的相关讨论:
– 如何在安装之前确定一个应用能否移到SD卡?
通过阅读上述链接可获取更多细节和具体解决方案,如通过查阅文档developer.android.com/guide/topics/data/install-location.html
。
正文完