Android中让应用程序自动安装到手机内存及判断应用程序是否安装在SDCard中

Posted wikiki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中让应用程序自动安装到手机内存及判断应用程序是否安装在SDCard中相关的知识,希望对你有一定的参考价值。

上次写了个widget程序,安装好后准备把它添加到手机主页上,发现窗口小部件中找不到我刚刚安装的那个widget,网上查资料才发现系统窗口小部件只能先加载扫描安装在内存的应用程序,把属于widget的APP显示到小部件列表上。

对于开发者来说,怎样才能让应用程序自动安装到手机内存中去呢?

android2.2版本及之后,AndoridManifest.xml 中有一个属性: Android:installLocation ,可以通过设置这个属性的三个值 "auto" | "internalOnly" | "preferExternal",来决定将应用程序安装到哪里。

auto:

程序可能安装到外部存储介质上(例如,SDCard),但是默认会被安装到手机内存中,当手机内存为空时,程序将被安装到外部存储介质上。当程序安装在手机上后,用户可以在外部存储介质和手机内存上自行移动。

internalOnly(默认值):

当设置了该值后,程序只能安装在内存中,当手机内存为空时,安装不成功。

preferExternal:

将程序安装在外部存储介质上,但系统不保证程序一定会安装到外部存储介质上,当外部存储介质不可以或为空时,程序将被安装到内存中。若程序使用了forward-locking机制时也将被安装到内存中,因为外部存储不支持这种机制。程序安装后,用户同样可以在外部存储介质和内存之间自由移动。


当我们想知道应用程序是否安装在SDCard中时,可用如下语句判断:

 

[java] view plain copy
 
    1. /** 
    2.  * 判断包名所对应的应用是否安装在SD卡上 
    3.  * @return, true if install on SD card  
    4.  */  
    5. public static boolean isInstallOnSDCard(String packageName) {  
    6. PackageManager pm = LauncherApplication.getApp().getPackageManager();  
    7. ApplicationInfo appInfo;  
    8. try {  
    9.     appInfo = pm.getApplicationInfo(packageName, 0);  
    10.     if ((appInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {  
    11.         return true;  
    12.     }  
    13. catch (NameNotFoundException e) {  
    14.     e.printStackTrace();  
    15. }  
    16. return false;  
    17. }  

以上是关于Android中让应用程序自动安装到手机内存及判断应用程序是否安装在SDCard中的主要内容,如果未能解决你的问题,请参考以下文章

Android推送通知权限判断及跳转到权限设置界面(完善兼容8.0)

请问,安卓手机上,是不是有办法从网页中判断 某个程序是不是安装?请高人解答,谢谢。

Android系统如何把软件安装到SD卡

百度判断手机终端并自动跳转uaredirect.js代码及使用实例

如何用电脑操作android手机

android 有啥方法可以判断手机是不是安装支付宝!