首页 > 系统相关 >Android如何判断应用程序是安装在手机内存中还是SD卡

Android如何判断应用程序是安装在手机内存中还是SD卡

时间:2022-10-06 11:36:46浏览次数:57  
标签:外部 程序 存储介质 应用程序 内存 Android 安装 android SD


/**
* 判断包名所对应的应用是否安装在SD卡上
* @param packageName
* @return, true if install on SD card
*/
public static boolean isInstallOnSDCard(String packageName) {
PackageManager pm = LauncherApplication.getApp().getPackageManager();
ApplicationInfo appInfo;
try {
appInfo = pm.getApplicationInfo(packageName, 0);

if ((appInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
return true;
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}

return false;
}


android 程序怎么默认或者说允许安装到sd卡


要声明权限


1 . < android > 2 . < manifestAdditions > 3 . <! [CDATA[ 4 . < manifest android:installLocation = " auto " > 5 . < uses - permission android:name = " android.permission.INTERNET " /> 6 . </ manifest > 7 . ]] > 8 . </ manifestAdditions > 9 . </ android >


其中: android:installLocation="auto"代表默认安装到内置存储器中,但是允许用户把它转移到SD卡上。


而如果需要默认安装在SD卡上,只需要  


< manifest android:installLocation = " preferExternal " > ... </ manifest >


不过提醒你,安装在SD卡上有时候会出现莫名的问题




在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通过设置该属性可以使得开发者以及用户决定程序的安装位置.

android:installLocation隶属于AndroidManifest.XML中的manifest节点.如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="string"
android:sharedUserId="string"
android:sharedUserLabel="string resource"
android:versionCode="integer"
android:versionName="string"
android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
. . .
</manifest>

android:installLocation可以设置为"auto"、"internalOnly"、"preferExternal"三个值中的任何一个.程序可能被安装在外部存储介质上(例如:SD Card),但是默认会被安装到手机内存中.当手机内存为空时,程序将被安装到外部存储介质上.当程序安装到手机上后,用户      可以决定把程序放在外部储介质还是内存中.默认值.当设置为该值时,程序只能被安装在内存中,如果内存为空,则程序将不能成功安装.将程序安装在外部存储介质上,但是系统不保证程序一定会被安装到外部存储介质上.当外部存储介质不可以或空时,程序将被安装到内存中.程序使用了for      ward-locking机制时也将被安装到内存中,因为外部存储不支持此机制.程序安装后,用户可以自由切换程序应该在外部还是内部存储介质上.注意:当程序使用了Google Play的Copy Protection特性时,只能安装到内存中.当程序被安装到外部存储介质时,① .apk文件将被移动到外部存储介质上,但是程序的数据仍然会在内存中② 保存.apk文件的容器将会使用一个随机生成的密钥进行加密,这样只有安装该程序的设置可以使用存在外部存储介质上的数据.警告:当外部存储介质被卸载时,安装在该外部存储介质上的程序将立刻被终止掉!向后兼容性:声明了android:installLocation,但android:minSdkVersion小于8时,我们使用不低于Froyo的AVD进行编译,这样在低于Froyo的系统中android:installLocation将被忽略,而不低于Fro  yo的系统中将使用我们指定的android:installLocation.当我们的程序具有如下行为时我们不应该将程序安装到外部存储介质上①Service正在运行的服务将被终止,当外部存储介质被重新加载时服务不会被重启.②Alarm Service闹钟服务将被取消,开发者必须在外部存储介质重新加载后重新注册闹钟服务.③Input Method Engines输入法将被换成系统输入法,当外部存储介质被重新加载后用户可以通过系统设置来启动我们的输入法④Live Wallpapers我们的动态壁纸将被替换为默认的动态壁纸.外部存储介质重载后,用户可以更换回来.⑤Live Folders我们的动态文件夹将被移出.⑥App Widgets我们的小部件将被移出,通常只有系统重启后我们的小部件才可用.⑦Account Managers使用AccountManager创建的账户将会消失,直至存储介质被重新加载.⑧Sync Adapters只有外部存储介质被重新加载时,我们的同步功能才可用⑨Device Administrators我们的DeviceAdminReceiver将会失效⑩监听开机结束事件系统会在加载外部存储介质之前发送ACTION_BOOT_COMPLETED广播.因此安装在外部存储介质的程序将不能接受开机广播.通常,只要我们没有使用上述的特性,我们就可以将我们的程序安装到外部存储介质上.例如,大的游戏程序.当我们的APK文件有几M大时我们应该认真的考虑是否要将程序移动到外部存储介质上以帮助用户节省内存.



标签:外部,程序,存储介质,应用程序,内存,Android,安装,android,SD
From: https://blog.51cto.com/jdsjlzx/5733480

相关文章

  • Android 创建与解析XML(一)—— 概述
    Android是最常用的智能手机平台,XML是数据交换的标准媒介,Android中可以使用标准的XML生成器、解析器、转换器API,对XML进行解析和转换。XML,相关有DOM、SAX、JDOM、DOM......
  • Android 滑动效果基础篇(三)—— Gallery仿图像集浏览
    Android系统自带一个Gallery浏览图片的应用,通过手指拖动时能够非常流畅的显示图片,用户交互和体验都很好。本示例就是通过Gallery和自定义的View,模仿实现一个仿Gallery图......
  • Android 滑动效果入门篇(一)—— ViewFlipper
    ​​​ViewFilpper​​ 是Android官方提供的一个View容器类,继承于ViewAnimator类,用于实现页面切换,也可以设定时间间隔,让它自动播放。又ViewAnimator继承至于FrameLayout......
  • Android 滑动效果入门篇(二)—— Gallery
    ​​​Gallery​​ 是Android官方提供的一个View容器类,继承于AbsSpinner类,用于实现页面滑动效果。从上面的继承关系可以看出,AbsSpinner类继承自AdapterView,因此我们可以......
  • Android 使用Gallery实现Tab
    main.xml布局文件: Java代码​​​​1.<?xmlversion="1.0"encoding="utf-8"?>2.<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/androi......
  • Android Asynchronous HTTPClient的实现和优化
    大家知道Android对UI线程的反应时间要求很高,超过5秒钟直接ANR掉,根本不给你机会多等。而Android应用与后端系统的交互是最基本的需求之一,如何实现高效的AsynchronousHTTPCli......
  • Android GridView控件自定义
    虽然​​Android​​​已自带了GridView,但是,却不够灵活,同时也不能自由添加控件,因此,本人通过需要进一步封装,来实现​​Android自定义GridView控件​​,达到自己需要的效果。......
  • Android实现渐显按钮的左右滑动效果
    本示例演示在Android中实现带渐显按钮的左右滑动效果。关于滑动效果,在我的上一篇博文中提到过,有兴趣的朋友可以访问如果大家想实现带指引效果的左右滑动,请访问博先看下......
  • Android闪屏示例程序
     用过手机QQ的基本上都知道,刚启动程序时候会在一个界面停留一会,按任意键的就直接跳过,这就是所谓的闪屏。那么,在Android中怎样实现这样的效果呢? 1、新建一个Android项目,命......
  • Android实现图片倒影效果
    ​​android倒影实现抖动的镜面效果​​​​http://clareshao.iteye.com/blog/1419695​​android中的gallery的一个样式,具有倒影效果。左右滑动也不错。​​http://down......