本文编辑整理自:
http://blog.163.com/hero_213/blog/static/3989121420116212341948/ http://blog.163.com/hero_213/blog/static/39891214201162123639488/ Android应用程序的默认安装位置以及是否可移动取决于开发者在其AndroidManifest.xml中的设置

<manifest xmlns: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");

结束!

更多相关文章

  1. Pycharm安装PyQt5的详细教程
  2. Android(安卓)- Manifest 文件 详解
  3. 同时安装调试两个相同的应用 android:package 用来区分两个应用
  4. 关于有些安卓手机安装应用的时候提示应用未安装 的解决办法之一
  5. Android(安卓)BroadcastReceiver
  6. android:installLocation简析
  7. Ubuntu14.04下最新Android(安卓)NDK安装
  8. 测试_Android通过tcpdump抓包
  9. Android之Input子系统事件分发流程

随机推荐

  1. java io流(File类)
  2. 3.1 Ansible Playbooks 高级一
  3. k8s 集群部署 flannel 报错 Couldn't fet
  4. MYSQL设置密码以及外网访问
  5. 3.0 Ansible Playbooks基础
  6. Java GUI 图书管理系统
  7. 练习2-8 计算摄氏温度 (10分)
  8. 手把手教你如何用DolphinDB进行机器学习
  9. 仓库ERP管理系统(springboot)设计与实现,你
  10. 任擎(Tasgine)一站式企业应用服务平台介绍