您的位置:首页 > 移动开发 > Android开发

Android应用程序的安装位置(转)

2012-12-21 00:00 197 查看
应用的安装可以在AndroidManifest.xml 中设定

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

android:versionCode="1"

android:installLocation="auto"

android:versionName="1.0">

android:installLocation的值有三个 internalOnly ,auto,preferExternal,缺省值为internalOnly

internalOnly表示该应用程序只能安装到手机内部存储中。

auto表示由系统决定该应用程序安装到手机内部存储中还是SD卡中。 如果有SD卡且应用程序大于5M的话,安装到SD卡中,否则安排到手机内部存储中

preferExternal表示如果有SD卡就把该应用程序只能安装到SD卡中,否则安装到手机内部存储中。

android:installLocation为internalOnly时,用户在"Setting"->"Application"->"Manage applications"中不能把应用程序在SD卡与内存中相互移动

android:installLocation为auto或preferExternal时,用户在"Setting"->"Application"->"Manage applications"中可以把应用程序在SD卡与内存中相互移动

另外,adb shell 中可以使用 pm setInstallLocation 2 命令中强行更改安装位置。2代表的是强制安装在SD卡中,0代表自动,1代表强制装到手机内部存储中。

在代码中,对于高于Android 2.2的手机中,可以通过ApplicationInfo.FLAG_EXTERNAL_STORAGE 标记可以判断应用是否安装在Sdcard上,对于低于Android 2.2的手机可以通过ApplicationInfo的sourceDir属性为/sdcard/开头来确定APK安装的位置。

示例1

PackageManager pm=ctx.getPackageManager();

ApplicationInfo appInfo=pm.getApplicationInfo(pkgName,0);

if((appInfo.flags &ApplicationInfo.FLAG_EXTERNAL_STORAGE)!=0){

// App on sdcard

System.out.println(pkgName+" install on sdcard");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息