Android_实现获取手机内apk并分享的功能
2016-07-21 20:23
507 查看
内容参考来源于”谷歌的小弟”-http://blog.csdn.net/lfdfhl/article/details/51286284
该功能在手机QQ里面已经被实现了,可以将手机内安装的应用apk发送给好友.
可以看到,里面有的内容分别为:
1. 图标
2. 应用名
3. 应用大小
4. 安装日期
功能实现的步骤如下:
先获取手机内应用的集合
四项数据的获取
我们通过
其实通过
但是真机测试发现华为/小米的手机获取到的是系统默认的小绿人icon,无法正确获取图标.
原因并没有做出具体说明…
在
里面可以找到:
这样就能正确获得icon了.
同样的,
需要注意的是这个值是一个毫秒值
需要用
PS:还有
获取apk文件大小的话,首先需要找到apk文件本身
可惜的是
其实还是从
官方文档对其的描述为
Full path to the base APK for this application
有了路径,就都好办了:
注意:获取手机apk的信息是一个耗时操作,要在子线程进行
最后就是如何分享出去:
将apk文件放入intent里面,然后调用系统的分享功能即可.
该功能在手机QQ里面已经被实现了,可以将手机内安装的应用apk发送给好友.
可以看到,里面有的内容分别为:
1. 图标
2. 应用名
3. 应用大小
4. 安装日期
功能实现的步骤如下:
先获取手机内应用的集合
List<PackageInfo> packageInfoList = mPackageManager.getInstalledPackages(0);
四项数据的获取
/** * 获取应用的名称 */ public String getApplicationName(String packageName,PackageManager packageManager) { String applicationName=null; try { ApplicationInfo applicationInfo = packageManager.getApplicationInfo(packageName, 0); applicationName = (String) packageManager.getApplicationLabel(applicationInfo); } catch (PackageManager.NameNotFoundException e) { } return applicationName; }
我们通过
packageManager.getApplicationLabel(applicationInfo);获得了应用名
其实通过
packageManager.getApplicationIcon(ApplicationInfo info);就能获得应用的icon
但是真机测试发现华为/小米的手机获取到的是系统默认的小绿人icon,无法正确获取图标.
原因并没有做出具体说明…
在
PackageInfo中有这个字段:
public ApplicationInfo applicationInfo;,
里面可以找到:
//Retrieve the current graphical icon associated with this item. public Drawable loadIcon(PackageManager pm) { return pm.loadItemIcon(this, getApplicationInfo()); }
这样就能正确获得icon了.
同样的,
PackageInfo内部还有
public long lastUpdateTime;字段
需要注意的是这个值是一个毫秒值
需要用
SimpleDateFormat来进行转换.
PS:还有
public long firstInstallTime;字段.
获取apk文件大小的话,首先需要找到apk文件本身
可惜的是
packageManager并没有类似
getApplicationApk这样的方法.
其实还是从
PackageInfo里面的
ApplicationInfo里面去找:
public String sourceDir;
官方文档对其的描述为
Full path to the base APK for this application
有了路径,就都好办了:
File apkFile = new File(packageInfo.applicationInfo.sourceDir); apkFile.length() / 1024 / 1024
注意:获取手机apk的信息是一个耗时操作,要在子线程进行
最后就是如何分享出去:
private class ItemClickListenerImpl implements AdapterView.OnItemClickListener{ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { File apkFile = mAppInfoList.get(position).getApkFile(); Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("*/*"); intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(apkFile)); startActivity(intent); } }
将apk文件放入intent里面,然后调用系统的分享功能即可.
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories