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. }
时间: 2024-07-29 23:54:19

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

(九)android 中数据存储与访问——保存文件到手机内存

9.1手机的存储区域 手机的存储区域通常有两个地方:一:手机内部存储空间,理解成一块微硬盘/data/data/:二:外部存储空间SD卡 9.2方法捕获异常的原则 如果方法有返回值,则用try catch捕获,如果方法的返回值是Void类型,则使用throws抛出异常 9.3 上下文Context Context:是一个类,提供一些方便的api 可以得到应用程序的环境,例如:环境的包名,安装路径,资源路径,资产的路径 9.4 保存文件到手机内存——登陆界面例子程序 9.4.1 项目需求 用户登陆

(运存扩展其)Android手机内存扩展软件RAMEXPANDER使用教程

广义的手机系统内存分为"手机运行内存"及"手机非运行内存".手机的"运行内存"即手机的RAM,相当于电脑的内存(或者叫内存条),手机的"非运行内存",即手机的ROM,是机身内部存储器,相当于电脑的硬盘.手机"运行内存"大,手机就能流畅地运行多个程序,手机"非运行内存"大,能存放更多的数据.Android手机系统内存可以通过"设置>应用程序>管理应用程序"来

Android实战技巧之十八:adb取出安装在手机中的apk

场景: 朋友看见你Android手机中的游戏或应用很好玩,也想装一个此程序,但限于网络条件不能从网上下载.那么最简单的办法就是直接从你手机中将此apk扣出来给他安装上. pm命令 第一步,找到程序的包名 借助adb shell pm命令,将安装的所有应用包名列出来: $ adb shell pm list packages package:android package:cn.wps.moffice package:com.android.backupconfirm package:com.an

Android 真机 程序安装后手机桌面或应用/窗口小部件视图里不显示程序图标

本文主要介绍android应用程序安装后图标不显示的几个可能原因. 自己写的程序突然安装后图标不见了,在应用程序安装中能找到,但是桌面上就是没有图标,启动只能从最近列表中其中..一般这种情况只会在服务类程序和测试程序中出现,因为不需要图标. 手机是中兴手机,在试过更改Android api版本.图标图片等方法后依然无果,又试了修改程序名称,问题解决.原名称是voter,被中兴和谐了...和谐了...谐了...了....又试了习大大的名字,依然不显示图标....欲哭无泪.... 附带网络上其他可能

真正的Derby新手教程,Derby安装,创建数据库,在Java程序中使用Derby

1,下载并安装Derby: 下载地址:http://db.apache.org/derby /derby_downloads.html,下载最新版本. 我用的是10.5.3.0. 解压缩到任意文件夹,我的是:E:\Java\Joy\derby 2,配置环境变量: 建立DERBY_HOME,值:E:\Java\Joy\derby\db- derby-10.5.3.0-bin\db-derby-10.5.3.0-bin 在Path加入:%DERBY_HOME%\bin 在CLASSPATH加入:%D

android 判断应用程序是否已安装

1.判断是否安装/** check the app is installed*/private boolean isAppInstalled(Context context,String packagename){PackageInfo packageInfo;        try {            packageInfo = context.getPackageManager().getPackageInfo(packagename, 0);         }catch (Name

使用Ant自动签名、打包Android apk并且自动安装到手机

一.建立Ant打包Apk 新建一个TestAnt项目 创建App的签名密钥 参考我的这篇github,欢迎Star|点击这里 取到密钥后,在项目中创建一个keystore的文件夹,复制密钥到此 给项目添加Ant //到项目的上级目录 cd /Users/.../Documents/workspace/ //给相聚添加ant,-p 项目 -t 是target 我这里是android-21 android update project -p TestAnt -t android-21 --subpr

Android实现应用下载并自动安装apk包

安装: ? 1 2 3 4 5 String str = "/CanavaCancel.apk"; String fileName = Environment.getExternalStorageDirectory() + str; Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.an

Anaconda中安装了Libtiff模块,但运行程序显示ModuleNotFoundError: No module named 'libtiff'

出现问题:Anaconda中已经用[conda install libtiff]命令安装了libtiff,并且利用命令[conda list]发现libtiff确实存在,但在pip中却不存在[pip list] 解决办法: 1. 下载anaconda中当前虚拟环境下对应版本的libtiff的whl文件,并用pip安装,我的是TensorFlow36虚拟环境,python版本是3.6 libtiff下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/ c