您的位置:首页 > 移动开发 > Android开发

Android_实现获取手机内apk并分享的功能

2016-07-21 20:23 507 查看
内容参考来源于”谷歌的小弟”-http://blog.csdn.net/lfdfhl/article/details/51286284

该功能在手机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里面,然后调用系统的分享功能即可.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android apk