读取所有的android应用显示在Item中,按键有响应
2014-11-18 17:35
459 查看
1. 读取所有的应用
2. 显示所有的应用
3. 获取安装应用的权限列表
2. 显示所有的应用
3. 获取安装应用的权限列表
public class MainActivity extends Activity implements OnItemClickListener { private GridView mGridView; private Context mContext; private PackageManager mPackageManager; private List<ResolveInfo> mAllApps; List<String> packagelist=new ArrayList<String>(); List<String> systemApp=new ArrayList<String>(); HashMap<String, String[]> map=new HashMap<String, String[]>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setupViews(); } public void setupViews(){ mContext = MainActivity.this; mGridView = (GridView)findViewById(R.id.allapps); //用以显示读取到的应用 mPackageManager = getPackageManager(); //包管理器 Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); mAllApps = mPackageManager.queryIntentActivities(mainIntent, 0); //得到所有的APP Collections.sort(mAllApps, new ResolveInfo.DisplayNameComparator(mPackageManager)); //排序 mGridView.setAdapter(new GridItemAdapter(mContext, mAllApps)); //显示设置 mGridView.setNumColumns(3); //显示列数 mGridView.setOnItemClickListener(this); //设置Click监听 } public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ResolveInfo res = mAllApps.get(position); String pkg = res.activityInfo.packageName; String cls = res.activityInfo.name; ComponentName componet = new ComponentName(pkg, cls); Intent i = new Intent(); i.setComponent(componet); startActivity(i); } private class GridItemAdapter extends BaseAdapter{ private Context context; private List<ResolveInfo> resInfo; public GridItemAdapter(Context c,List<ResolveInfo> res){ context = c; resInfo = res; } public int getCount() { return resInfo.size(); } public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; } public View getView(int position, View convertView, ViewGroup parent) { convertView = LayoutInflater.from(context).inflate(R.layout.application_layout, null); ImageView app_icon = (ImageView)convertView.findViewById(R.id.app_icon); TextView app_tilte = (TextView)convertView.findViewById(R.id.app_title); ResolveInfo res = resInfo.get(position); app_icon.setImageDrawable(res.loadIcon(mPackageManager)); app_tilte.setText(res.loadLabel(mPackageManager).toString()); if((res.activityInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)<=0){ String packagename=res.loadLabel(mPackageManager).toString(); String[] permission; try { //获取已安装应用的权限 permission = mPackageManager.getPackageInfo(res.activityInfo.packageName, PackageManager.GET_PERMISSIONS).requestedPermissions; packagelist.add(packagename); map.put(packagename, permission); }catch (NameNotFoundException e) { e.printStackTrace(); } } return convertView; } } }
相关文章推荐
- android读取SD卡下面所有的TXT文件名,listView显示出来。
- Android读取SD卡下面所有的TXT文件名 listView显示出来
- Android GridView之实现单元格合并,以及第一个item点击无响应或显示不正常的解决方案
- android 应用组件[通用 Intent---显示所有闹铃] 四
- Android应用隐藏在所有程序列表内显示图标
- 基于Android的短信应用开发(五)——读取显示会话信息记录
- 【Android疑难杂症】GridView动态设置Item的宽高导致第一个Item不响应或显示不正常的问题
- Android实现读取SD卡下所有TXT文件名并用listView显示出来的方法
- 【Android疑难杂症】GridView动态设置Item的宽高导致第一个Item不响应或显示不正常的问题
- ListView应用------ListView控件显示List集合中的数据,并对Item响应选择事件(法一)
- android应用中不响应按键事件(俗称拦截按键)
- Android4.2 使preinstall中的所有应用正常显示在launcher的默认布局中
- Android读取SD卡下面所有的TXT文件名 listView显示出来
- Android中的使用ListView控件显示List集合中的数据,并对Item响应选择事件(方法一)
- ListView应用------ListView控件显示List集合中的数据,并对Item响应选择事件(法二)
- android应用面试宝典(下);用自定义组件控制循环组件使用bug还添加标志显示答案标志位;通过包名读取配置文件AndroidManifest.xml
- Android 获取所有安装应用显示在listview上
- 获取android手机里的所有应用,点击并响应
- 【Android】读取sdcard卡上的所有图片并且显示,读取的过程有进度条显示
- android悬浮球,应用在所有软件之上,点击可以显示菜单