Android上发送已安装软件原理及其实现
作者:Chilau 发布于:2014-1-31 0:51 分类:android
某些手机(比如华为)自带的文件管理器内可以发送已安装的软件,通过蓝牙/彩信或者其它支持的渠道,也可以将安装包保存到SD卡内。经过试验发现,不用root,普通权限的应用也可以实现这一点。
原来我也以为只有system权限的应用才可以访问存有安装包的/data/app目录,其实不然,从图中可以看到,权限为744,也就是说system可以读写,其它的只有读取权限。
不说其他的了,上主要代码:
File f = new File(tempInfo.applicationInfo.sourceDir);
Intent intent1 = new Intent();
intent1.setAction(Intent.ACTION_SEND);
intent1.setType("*/*");
intent1.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f));
startActivity(intent1);
其中tempinfo是从List<packageinfo>中来的。applicationInfo.sourceDir就代表了应用的所在路径。之后只用intent传入路径就行了,系统会自动处理。
效果:
可以看到,其中有蓝牙发送,上传到dropbox,通过彩信发送的选项。
其实仔细想想,蓝牙是系统应用,应该有system权限,具体可以看/data/misc/bluetooth的权限和所有者。
有兴趣的朋友可以留言要整个程序的源码。
« android不调用JNI解析挂载点对应设备 | busybox 中无mkfs.ext4无法创建ext4格式文件系统»


发表评论: