http://blog.csdn.net/xanxus46/article/details/8228366

是否遇到过自己手机上有好的应用,但不知道怎么分享给好友的时候呢?作为一名程序员,遇到了这样简单的问题,肯定要想办法解决,经过google和百度,查得android上所有已安装的应用都会做一个备份,分别存放在三个地方:

1、系统签名的软件:/system/app

2、安装到内存上的非系统签名软件:/data/app

3、安装到sd卡上的非系统签名软件:/mnt/asec/包名-数字/pkg.apk

我们可以使用re浏览器查看和分享这些apk,本人已确认过,这些应用都是可用的,但是这样子相当麻烦,因为你自己必须记得这三个位置,以及这三个位置对应的存放的应用,否则每次都要把三个文件夹浏览一次,多麻烦呀,程序就是为了让人们偷懒而生的,因此废话不多说,下面贴出我自己写的可列出所有安装应用并能够通过蓝牙分享的代码:

[java] view plaincopy print?
  1. public class MainActivity extends Activity {
  2. GridView mGridView = null;
  3. List<ResolveInfo> mAllApps = new ArrayList<ResolveInfo>();
  4. List<PackageInfo>mAllPackages=new ArrayList<PackageInfo>();
  5. PackageManager packageManager = null;
  6. @Override
  7. public void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.activity_main);
  10. showView();
  11. }
  12. public void showView() {
  13. packageManager = getPackageManager();
  14. mGridView = (GridView) this.findViewById(R.id.gridView1);
  15. setMyAllApps();
  16. mGridView.setAdapter(new MyAdapter(mAllApps, this));
  17. mGridView.setNumColumns(4);
  18. mGridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
  19. public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
  20. int arg2, long arg3) {
  21. // TODO Auto-generated method stub
  22. ResolveInfo resolveInfo=mAllApps.get(arg2);
  23. String packageName=resolveInfo.activityInfo.packageName;
  24. for(Iterator<PackageInfo>iterator=mAllPackages.iterator();iterator.hasNext();){
  25. PackageInfo packageInfo=iterator.next();
  26. if(packageInfo.applicationInfo.packageName.equals(packageName)){
  27. Log.i("six grade", "source dir:"+packageInfo.applicationInfo.sourceDir);
  28. File sourceFile=new File(packageInfo.applicationInfo.sourceDir);
  29. //调用android系统的分享窗口
  30. Intent intent=new Intent();
  31. intent.setAction(Intent.ACTION_SEND);
  32. intent.setType("*/*");
  33. intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(sourceFile));
  34. startActivity(intent);
  35. }
  36. }
  37. return true;
  38. }
  39. });
  40. }
  41. public void setMyAllApps() {
  42. // 查找所有首先显示的activity
  43. Intent intent = new Intent(Intent.ACTION_MAIN, null);
  44. intent.addCategory(Intent.CATEGORY_LAUNCHER);
  45. mAllApps = packageManager.queryIntentActivities(intent, 0);
  46. mAllPackages=packageManager.getInstalledPackages(0);
  47. // 按照名字排序
  48. Collections.sort(mAllApps, new ResolveInfo.DisplayNameComparator(
  49. packageManager));
  50. }
  51. @Override
  52. public boolean onCreateOptionsMenu(Menu menu) {
  53. getMenuInflater().inflate(R.menu.activity_main, menu);
  54. return true;
  55. }
  56. class MyAdapter extends BaseAdapter {
  57. List<ResolveInfo> appList;
  58. Context mContext;
  59. public MyAdapter(List<ResolveInfo> appList, Context context) {
  60. this.appList = appList;
  61. mContext = context;
  62. }
  63. public int getCount() {
  64. // TODO Auto-generated method stub
  65. return appList.size();
  66. }
  67. public Object getItem(int position) {
  68. // TODO Auto-generated method stub
  69. return null;
  70. }
  71. public long getItemId(int position) {
  72. // TODO Auto-generated method stub
  73. return 0;
  74. }
  75. public View getView(int position, View convertView, ViewGroup parent) {
  76. // TODO Auto-generated method stub
  77. convertView = LayoutInflater.from(mContext).inflate(
  78. R.layout.application, null);
  79. ImageView imageView = (ImageView) convertView
  80. .findViewById(R.id.imageView1);
  81. TextView textView = (TextView) convertView
  82. .findViewById(R.id.textView1);
  83. ResolveInfo resolveInfo = appList.get(position);
  84. textView.setText(resolveInfo.loadLabel(packageManager));
  85. imageView.setBackgroundColor(Color.TRANSPARENT);
  86. Bitmap iconBitmap = ImageUtils.drawableToBitmap(resolveInfo
  87. .loadIcon(packageManager));
  88. imageView.setImageBitmap(ImageUtils.getRoundedCornerBitmap(
  89. ImageUtils.zoomBitmap(iconBitmap, 60, 60), 10));
  90. return convertView;
  91. }
  92. }
  93. }

下面是程序截图

我使用的是gridview把所有已安装的用户应用列出来,但是没有做搜索,以后有时间肯定会加上,相信肯定会为你带来方便的。

2
0
  • 上一篇Android中通过Intent 调用图片、视频、音频、录音、拍照
  • 下一篇android之远程控制电脑播放ppt

Android之共享已安装的apk应用相关推荐

  1. android_ android apk analyzer(libchecker apk分析器):分析Android手机上已安装的app(库/基础组件分析/开发技术)/从酷安市场下载安装包

    android apk analyzer(libchecker apk分析器):分析Android手机上已安装的app(库/基础组件分析/开发技术-) download app(apk) Releas ...

  2. Android获取设备已安装的应用

    2019独角兽企业重金招聘Python工程师标准>>> 项目中, 我们经常要用到显示系统已安装的应用, 可以通过两种方式获取已安装的应用, 一种是通过ApplicationInfo, ...

  3. android 获取已安装应用的安装包,Android获取设备已安装的应用

    项目中, 我们经常要用到显示系统已安装的应用, 可以通过两种方式获取已安装的应用, 一种是通过ApplicationInfo, 一种是通过ResolveInfo. 这里用的是ResolveInfo, ...

  4. Android中对已安装应用的管理实现

    获取.管理手机中已安装的所有应用信息 1.创建应用的实体类AppInfo,属性有应用的名称.包名.图标.第一次安装时间和版本名称 public class AppInfo {private Strin ...

  5. Android如何打开未安装的apk,android获取未安装的APK文件的信息

    下面从一个未安装的android的apk文件获取apk信息 /** * 获取未安装的apk信息 * * @param ctx Context * @param apkPath apk路径,可以放在SD ...

  6. Android Studio 安卓模拟器安装本地APK

    一.配置adb环境变量 adb window10 配置环境变量 二.打开AVD模拟器 三.进入要安装的apk目录,在地址栏输入cmd回车 四.安装APK adb install xxx.apk adb ...

  7. Android手机导出的已安装的APK到电脑

    准备:手机链接电脑并运行需导出的app 1.电脑打开cmd 2.运行:adb shell  3.输入执行:dumpsys window | grep mCurrentFocus (获取手机当前运行AP ...

  8. Android 获取所有已安装应用程序的包名

    //因为我的手机是华为手机所以过滤掉了华为,大家可以按需求过滤 public void getAppProcessName(Context context) {//当前应用pidfinal Packa ...

  9. android 外部存储列表,如何获取Android设备的已安装外部存储列表

    我使用/ proc / mounts文件来获取可用存储选项的列表 public class StorageUtils { private static final String TAG = " ...

最新文章

  1. c++ vector简单使用
  2. C语言标准库函数getenv的实现
  3. python爬虫图片-如何用Python来制作简单的爬虫,爬取到你想要的图片
  4. hdu 4035 可能性DP 成都网络游戏
  5. Android Resources
  6. Android使用token维持登陆状态的方法
  7. 可穿戴设备对企业的积极意义
  8. iconfont 图标转为字体_App 中使用 Iconfont 的整套方案
  9. sql数据导入错误代码: 0x80004005_PL/SQL 非预定义异常、自定义异常处理、RAISE_APPLICATION_ERROR...
  10. 信息学奥赛一本通 1344:【例4-4】最小花费 | 洛谷 P1576 最小花费
  11. Memcached 学习篇【转】
  12. linux tomcat启动nohup,linux下tomcat添加服务
  13. POJ 1458 Common Subsequence DP LCS 最长公共子序列
  14. mysql5.7 之 sql_mode=only_full_group_by问题
  15. VLOOKUP模糊匹配的妙用
  16. 【操作系统学习笔记】操作系统基础
  17. 实战自制Linux操作系统
  18. php h5微信支付签名错误,微信H5支付签名错误
  19. 珠宝订货(订单)系统与ERP实现库存信息同步的实现方案分享
  20. IGRP原理及配置案例

热门文章

  1. 【转载】一文总结学习 Python 的 14 张思维导图
  2. 全国大学生英语竞赛培训:听力、词汇语法、完形填空、阅读理解、翻译、改错、IQ题、大小作文、语法等部分快速得分、备战策略和获奖技巧讲解!
  3. n支队伍循环赛安排(附完整代码)
  4. ubuntu安装java依赖,Ubuntu出现“dpkg: 依赖关系问题使得libbsd0:i386的配置工作不能继续”错误...
  5. 宏基因组有参分析和无参分析差异
  6. 0-1背包问题(0-1 knapsack problem)c++实现
  7. 「 计算机网络 」TCP的粘包拆包问题
  8. 【物联网赛题】智能商超系统
  9. 触摸屏显示无法连接到服务器,wincc flexible软件打开时提示“无法连接到SQL服务器-工业支持中心-西门子中国...
  10. 单部六层电梯西门子逻辑控制竞赛博途V15.1以太网软件仿真