Android应用程序的安装位置

Android应用程序的默认安装位置以及是否可移动取决于开发者在其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");

时间: 2024-11-05 23:19:54

Android应用程序的安装位置的相关文章

如何利用 release 版本的 backtrace 来定位 android NDK 程序的崩溃位置

我们知道 android NDK 程序在崩溃时会生成一个 tombstone 的 backtrace (也可利用 ADB logcat 抓取),从这个 backtrace 中我们可以了解是哪个函数引发的崩溃,但是通常由于我们发布时都是 release 版,无法利用 backtrace 中的地址信息直接定位到源码和行号,当引发崩溃的错误不是很明显时,对于我们解决问题的帮助就不大. 这时通常我们是重编一个 debug 版本并设法重现 crash.这样做有个两个问题,一是如果我们不知道复现步骤,或者复

android应用程序的安装方式与原理

四种安装方式: 1.系统应用安装――开机时完成,没有安装界面 2.网络下载应用安装――通过market应用完成,没有安装界面 3.ADB工具安装――没有安装界面. 4.第三方应用安装――通过SD卡里的APK文件安装,有安装界面,由packageinstaller.apk应用处理安装及卸载过程的界面. 应用安装的流程及路径 应用安装涉及到如下几个目录: system/app ---------------系统自带的应用程序,获得adb root权限才能删除 data/app  ----------

【转】android应用程序的安装方式与原理

四种安装方式: 1.系统应用安装――开机时完成,没有安装界面 2.网络下载应用安装――通过market应用完成,没有安装界面 3.ADB工具安装――没有安装界面. 4.第三方应用安装――通过SD卡里的APK文件安装,有安装界面,由packageinstaller.apk应用处理安装及卸载过程的界面. 应用安装的流程及路径 应用安装涉及到如下几个目录: system/app ---------------系统自带的应用程序,获得adb root权限才能删除 data/app  ----------

Android应用程序签名过程和解析过程分析

在正式解释Android应用程序签名过程之前,作为铺垫,还得先讲讲最基本的一些概念. 非对称加密算法 非对称加密算法需要两个密钥:公开密钥(简称公钥)和私有密钥(简称私钥).公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密:如果用私钥对数据进行加密,那么只有用对应的公钥才能解密.因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法. 非对称加密算法是数字签名和数字证书的基础,大家非常熟悉的RSA就是非对称加密算法的一种实现. 消息摘要算法 消息摘要算法(Mes

Xamarin.Android使用教程之创建第一个Android应用程序

<Xamarin Platform 试用版下载地址> 在本文中,我们将使用Xamarin创建第一个Android应用程序. 安装完Xamarin之后,在Visual Studio中点击File-> New Project,你应该可以在可用模板中看见一个Android选项. 继续并选择"Blank App (Android)",然后单击确定. Xamarin继续运行,然后创建你的第一个"Hello World"应用程序. 如果你只运行该应用程序,请确

Android应用程序组件Content Provider的启动过程源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6963418 通过前面的学习,我们知道在Android系统中,Content Provider可以为不同的应用程序访问相同的数据提供统一的入口.Content Provider一般是运行在独立的进程中的,每一个Content Provider在系统中只有一个实例存在,其它应用程序首先要找到这个实例,然后才能访问它的数据.那么,系统中的Conten

Android应用程序安装位置(App Install Location)

从API Level 8(Android 2.2)开始,你可以将你的应用程序安装到外部存储上(例如,设备的SD卡).你可以在应用程序的manifest文件中声明android:installLocation属性来使用这个可选的功能.如果你没有声明这个属性,你的应用程序只能被安装在内部存储中,并且不能移动到外部存储上. 允许系统将你的应用程序安装到外部存储上,你需要修改你的manifest文件.在其中的<manifest>标签下,添加android:installLocation属性,并将值设置

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

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

Android之——获取手机安装的应用程序

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47114331 前几篇有关Android的博文中,向大家介绍了几个项目中常用的实用功能,那么在这篇博文中,我将向大家介绍如何获取Android手机中已经安装的手机应用程序,实用过金山手机卫士或者360手机卫士的童鞋都知道,这些软件都可以获取到当前手机中安装的应用程序.那么,这些功能是如何实现的呢?就让我们一起来看看这些功能具体是如何实现的吧. 一.原理 原理很简单,我们通过Andr