一:显示用的控件是listview 和 baseAdapter 。

二:利用intent-filter过滤,和packageManager调用所有应用。

三:调用指定包名ComponentName方法启动相应应用

MainActivy :

public class MainActivity extends Activity {private ListView listView;
    private List<ResolveInfo> mApps;

    @Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_main);

        Intent intent = new Intent(Intent.ACTION_MAIN, null);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        mApps = getPackageManager().queryIntentActivities(intent, 0);

        listView = (ListView)findViewById(R.id.listView);
        listView.setAdapter(new MyAdapter(this,mApps));
        itemClick();
    }public void itemClick(){listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {ResolveInfo info = mApps.get(position);
                String packageName = info.activityInfo.packageName;
                String applicationName = info.activityInfo.name;
                ComponentName componentName = new ComponentName(packageName, applicationName);
                Intent intent = new Intent();
                intent.setComponent(componentName);
                startActivity(intent);

            }});
    }}

BaseAdapter:

public class MyAdapter extends BaseAdapter {List<ResolveInfo> apps;
    Context context;

    public MyAdapter(Context context , List<ResolveInfo> apps){super();
        this.context = context;
        this.apps = apps;
    }public int getCount(){return apps.size();
    }public Object getItem(int position){return apps.get(position);
    }public long getItemId(int position) {return position;
    }public View getView(int position , View contentView , ViewGroup parents){ViewHolder viewHolder ;
        if(contentView == null){viewHolder = new ViewHolder();
            contentView = LayoutInflater.from(context).inflate(R.layout.view_listview_item,null);

            viewHolder.IV_img = (ImageView)contentView.findViewById(R.id.IV_img);
            viewHolder.TV_packageName = (TextView)contentView.findViewById(R.id.TV_packageName);
            viewHolder.TV_applciationName = (TextView)contentView.findViewById(R.id.TV_applciationName);

            contentView.setTag(viewHolder);
        }else {viewHolder = (ViewHolder) contentView.getTag();
        }ResolveInfo appInfo = apps.get(position);
        viewHolder.IV_img.setBackground(appInfo.activityInfo.loadIcon(context.getPackageManager()));
        viewHolder.TV_applciationName.setText(appInfo.activityInfo.name);
        viewHolder.TV_packageName.setText(appInfo.activityInfo.packageName);

        return contentView;
    }static class ViewHolder{public ImageView IV_img;
        public TextView TV_packageName;
        public TextView TV_applciationName;
    }
}

Android学习日记(yzy):显示application并调用相关推荐

  1. android学习日记 RecyclerView的简单使用

    android学习日记 RecyclerView的简单使用 文章目录 android学习日记 RecyclerView的简单使用 一.如何使用RecyclerView? 二.使用步骤 1.首先在bui ...

  2. Android学习日记 Notification 通知

    Android学习日记 Notification 通知 文章目录 Android学习日记 Notification 通知 前言 使用步骤 总结 前言 下拉状态栏显示的通知功能 使用步骤 代码如下: p ...

  3. 【转】android学习日记01--综述

    转自:http://www.cnblogs.com/aiguozhe/p/3541941.html 一.总体框架 先上一张google提供官方的Android框架图: Android系统架构由5部分组 ...

  4. android学习日记一

    这几天在公司实习,公司主要是做android项目,以前在学校也学习过android,但是就学了点皮毛,在这里我准备把自己当做android一无所知的人,但是java会点的人,来系统的学习一下andro ...

  5. android学习日记01--综述

    开个博客,写点关于Android的知识,希望温故而知新吧! 一.总体框架 先上一张google提供官方的Android框架图: Android系统架构由5部分组成,分别是:Linux Kernel.A ...

  6. android学习日记:来电大头贴显示流程

    来电呼入时的各种信息显示都是在CallCard.java中实现的,其中的updateDisplayForPerson是主角.updateDisplayForPerson会根据电话的当前状态来更改名字号 ...

  7. Android学习日记

    2021.2.27 星期六 // TODO 2/27 // 标识符 字母数字下划线$组成 不能数字开头 区分大小写 // 关键字 // 变量 变量类型 变量名 驼峰法 变量值 // 类 Pascal ...

  8. 【Android学习日记】

    (一) Android 开发基础 1 Android平台的特性 1)  应用程序框架支持组建的重用和替换,包括打电话应用程序.文件管理器等. 2)  Dalvik虚拟机专门为移动设备做了优化,Dalv ...

  9. android学习日记15--WebView(网络视图)

    一.WebView 1.简述 WebView(网络视图)内置WebKit引擎,能加载显示网页,还支持JS,并且能够在Android平台使用AJAX WebView可以在布局中声明,也可以在Activi ...

  10. 日记背景 android,android学习日记:4.0源生背景修改

    经过整整一周的学习,总算实现了android中源生背景的修改.效果如下: 分别是修改前的原始界面.选择背景设置界面以及最后的效果图. 之前一直想用ScrollView来实现这个效果,后来发现用Gall ...

最新文章

  1. jquery中的each各种神奇遍历用法
  2. 基于VMwareWorkstation技术预览版2012上的WinServer8测试版安装
  3. vlan间访问控制的三种方法
  4. 数字图像处理——中值滤波及其改进算法
  5. html文档主体的根标签,2 HTML简介标签嵌套和并列关系文档声明
  6. python 图书馆管理程序下载_图书管理系统 免费开源代码 开发,分享 - CodeForge.cn...
  7. 结合django动态生成salt的pillar数据
  8. mysql优化20条原则
  9. linux ubuntu apache php 网站 'page not found'
  10. win10家庭版开启远程桌面(带rdpwrap.ini)
  11. WAV转MP3格式最简单的方法[zz]
  12. gis属性表怎么导成excel_ArcGIS中将属性表直接导出为Excel的方法
  13. gif软件(ShareX)
  14. MTK_android11_WIFI(内网)和4G(外网)共存
  15. 【制作fnt格式字体】 BMFont中文字体图集制作的方法~
  16. (Tiled官方文档翻译)第十节:使用无限地图(Tiled1.1)
  17. git 提交代码某个文件夹一直提交不上去
  18. mysql 增删修模型_48.Python中ORM模型实现mysql数据库基本的增删改查操作
  19. QDUOJ 生化危机 邻接表存图+BFS
  20. 安全加密 - HSM vs Trustzone vs SHE vs Evita ,

热门文章

  1. andriod获取带字母的iccid
  2. Phaser 3入门
  3. 怎么用计算机连接电视,电脑怎么连接电视当显示屏用
  4. 暗6 雷电三接口突然失效解决办法
  5. 操作STM32单片机蜂鸣器模块演奏歌曲《北京欢迎你》
  6. vscode插件快餐教程(3) - Diagnostic
  7. 23是android版本几,关于sdk=23的android版本权限的问题
  8. 凌小宁教授给软件新人的演讲——选择的力量
  9. Crucible安装与使用(代码审查Code Review)
  10. 深度学习之一---什么是神经网络