




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/blog/1159527PackageManager是个非常好的东西,其他的详细的细节等日后有时间整理PackageManager的功能:安装,卸载应用查询permission相关信息查询Application相关信息(application,activity,receiver,service,provider及相应属性等)查询已安装应用增加,删除permission清除用户数据、缓存,代码段等我们可以用PackageManager来显示系统安装的应用程序列表或者系统程序列表。注意了,这并不是获取当前的运行中的程序。废话先不多说AppShowActivity.java Java代码 1. packagecom.loulijun.appshow; 2. 3. importjava.util.ArrayList; 4. importjava.util.HashMap; 5. importjava.util.List; 6. importjava.util.Map; 7. 8. importandroid.app.Activity; 9. importandroid.content.Context; 10. importandroid.content.pm.ApplicationInfo; 11. importandroid.content.pm.PackageInfo; 12. importandroid.content.pm.PackageManager; 13. importandroid.graphics.drawable.Drawable; 14. importandroid.os.Bundle; 15. importandroid.view.LayoutInflater; 16. importandroid.view.View; 17. importandroid.view.ViewGroup; 18. importandroid.widget.ImageView; 19. importandroid.widget.ListView; 20. importandroid.widget.SimpleAdapter; 21. importandroid.widget.TextView; 22. 23. publicclassAppShowActivityextendsActivity 24. ListViewlv; 25. MyAdapteradapter; 26. ArrayListHashMapitems=newArrayListHashMap(); 27. 28. Override29. publicvoidonCreate(BundlesavedInstanceState) 30. super.onCreate(savedInstanceState); 31. setContentView(R.layout.main); 32. 33. lv=(ListView)findViewById(R.id.lv); 34. /得到PackageManager对象 35. PackageManagerpm=getPackageManager(); 36. /得到系统安装的所有程序包的PackageInfo对象 37. /Listpacks=pm.getInstalledApplications(0); 38. Listpacks=pm.getInstalledPackages(0); 39. 40. for(PackageInfopi:packs) 41. 42. HashMapmap=newHashMap(); 43. /显示用户安装的应用程序,而不显示系统程序 44. /if(pi.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)=0& 45. /(pi.applicationInfo.flags&ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)=0) 46. / 47. /这将会显示所有安装的应用程序,包括系统应用程序 48. /map.put(icon,pi.applicationInfo.loadIcon(pm);/图标 49. /map.put(appName,pi.applicationInfo.loadLabel(pm);/应用程序名称 50. /map.put(packageName,pi.applicationInfo.packageName);/应用程序包名 51. /循环读取并存到HashMap中,再增加到ArrayList上,一个HashMap就是一项 52. /items.add(map); 53. / /我想请问:这个上下有区别呀?54. /这将会显示所有安装的应用程序,包括系统应用程序 55. map.put(icon,pi.applicationInfo.loadIcon(pm);/图标 56. map.put(appName,pi.applicationInfo.loadLabel(pm);/应用程序名称 57. map.put(packageName,pi.applicationInfo.packageName);/应用程序包名 58. /循环读取并存到HashMap中,再增加到ArrayList上,一个HashMap就是一项 59. items.add(map); 60. 61. /* 62. *参数:Context 63. *ArrayList(item的集合) 64. *item的layout 65. *包含ArrayList中的HashMap的key的数组 66. *key所对应的值的相应的控件id 67. */68. adapter=newMyAdapter(this,items,R.layout.piitem, 69. newStringicon,appName,packageName, 70. newintR.id.icon,R.id.appName,R.id.packageName); 71. lv.setAdapter(adapter); 72. 73. 74. 75. classMyAdapterextendsSimpleAdapter 76. 77. privateintappTo; 78. privateStringappFrom; 79. privateViewBinderappViewBinder; 80. privateList?extendsMapappData; 81. privateintappResource; 82. privateLayoutInflaterappInflater; 83. 84. publicMyAdapter(Contextcontext,List?extendsMapdata, 85. intresource,Stringfrom,intto) 86. super(context,data,resource,from,to); 87. appData=data; 88. appResource=resource; 89. appFrom=from; 90. appTo=to; 91. appInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 92. 93. 94. publicViewgetView(intposition,ViewconvertView,ViewGroupparent) 95. 96. returncreateViewFromResource(position,convertView,parent,appResource); 97. 98. 99. 100. privateViewcreateViewFromResource(intposition,ViewconvertView,ViewGroupparent,intresource) 101. 102. Viewv; 103. if(convertView=null) 104. 105. v=appInflater.inflate(resource,parent,false); 106. finalintto=appTo; 107. finalintcount=to.length; 108. finalViewholder=newViewcount; 109. 110. for(inti=0;icount;i+) 111. 112. holderi=v.findViewById(toi); 113. 114. v.setTag(holder); 115. else116. 117. v=convertView; 118. 119. bindView(position,v); 120. returnv; 121. 122. 123. privatevoidbindView(intposition,Viewview) 124. 125. finalMapdataSet=appData.get(position); 126. if(dataSet=null) 127. 128. return; 129. 130. 131. finalViewBinderbinder=appViewBinder; 132. finalViewholder=(View)view.getTag(); 133. finalStringfrom=appFrom; 134. finalintto=appTo; 135. finalintcount=to.length; 136. 137. for(inti=0;icount;i+) 138. 139. finalViewv=holderi; 140. if(v!=null) 141. 142. finalObjectdata=dataSet.get(fromi); 143. Stringtext=data=null?:data.toString(); 144. if(text=null) 145. 146. text=; 147. 148. 149. booleanbound=false; 150. if(binder!=null) 151. 152. bound=binder.setViewValue(v,data,text); 153. 154. 155. if(!bound) 156. 157. /* 158. *自定义适配器,关键在这里,根据传递过来的控件以及值的数据类型, 159. *执行相应的方法,可以根据自己需要自行添加if语句。另外,CheckBox等 160. *集成自TextView的控件也会被识别成TextView,这就需要判断值的类型 161. */162. if(vinstanceofTextView) 163. 164. /如果是TextView控件,则调用SimpleAdapter自带的方法,设置文本 165. setViewText(TextView)v,text); 166. elseif(vinstanceofImageView) 167. 168. /如果是ImageView控件,调用自己写的方法,设置图片 169. setViewImage(ImageView)v,(Drawable)data); 170. else171. 172. thrownewIllegalStateException(v.getClass().getName()+isnota+ 173. viewthatcanbeboundsbythisSimpleAdapter); 174. 175. 176. 177. 178. 179. publicvoidsetViewImage(ImageViewv,Drawablevalue) 180. 181. v.setImageDrawable(value); 182. 183. package com.loulijun.appshow;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Context;import android.content.pm.ApplicationInfo;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.TextView;public class AppShowActivity extends Activity ListView lv; MyAdapter adapter; ArrayListHashMap items = new ArrayListHashMap(); Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); lv = (ListView)findViewById(R.id.lv); /得到PackageManager对象 PackageManager pm = getPackageManager(); /得到系统安装的所有程序包的PackageInfo对象 /List packs = pm.getInstalledApplications(0); List packs = pm.getInstalledPackages(0); for(PackageInfo pi:packs) HashMap map = new HashMap(); /显示用户安装的应用程序,而不显示系统程序/ if(pi.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)=0&/ (pi.applicationInfo.flags&ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)=0)/ / /这将会显示所有安装的应用程序,包括系统应用程序/ map.put(icon, pi.applicationInfo.loadIcon(pm);/图标/ map.put(appName, pi.applicationInfo.loadLabel(pm);/应用程序名称/ map.put(packageName, pi.applicationInfo.packageName);/应用程序包名/ /循环读取并存到HashMap中,再增加到ArrayList上,一个HashMap就是一项/ items.add(map);/ /这将会显示所有安装的应用程序,包括系统应用程序 map.put(icon, pi.applicationInfo.loadIcon(pm);/图标 map.put(appName, pi.applicationInfo.loadLabel(pm);/应用程序名称 map.put(packageName, pi.applicationInfo.packageName);/应用程序包名 /循环读取并存到HashMap中,再增加到ArrayList上,一个HashMap就是一项 items.add(map); /* * 参数:Context * ArrayList(item的集合) * item的layout * 包含ArrayList中的HashMap的key的数组 * key所对应的值的相应的控件id */ adapter = new MyAdapter(this, items, R.layout.piitem, new Stringicon, appName, packageName, new intR.id.icon, R.id.appName, R.id.packageName); lv.setAdapter(adapter); class MyAdapter extends SimpleAdapterprivate int appTo;private String appFrom;private ViewBinder appViewBinder;private List? extends Map appData;private int appResource;private LayoutInflater appInflater;public MyAdapter(Context context, List? extends Map data,int resource, String from, int to) super(context, data, resource, from, to);appData = data;appResource = resource;appFrom = from;appTo = to;appInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);public View getView(int position, View convertView, ViewGroup parent)return createViewFromResource(position, convertView, parent, appResource);private View createViewFromResource(int position, View convertView, ViewGroup parent, int resource)View v;if(convertView = null)v = appInflater.inflate(resource, parent,false);final int to = appTo;final int count = to.length;final View holder = new Viewcount;for(int i = 0; i count; i+)holderi = v.findViewById(toi);v.setTag(holder);elsev = convertView;bindView(position, v);return v;private void bindView(int position, View view)final Map dataSet = appData.get(position);if(dataSet = null)return;final ViewBinder binder = appViewBinder;final View holder = (View)view.getTag();final String from = appFrom;final int to = appTo;final int count =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上半年上海市卫生健康技术评价中心工作人员公开招聘考前自测高频考点模拟试题及答案详解(考点梳理)
- 2025年北京师范大学庆阳实验学校教师招聘40人模拟试卷及一套答案详解
- 2025年福州左海置地有限公司副总经理职业经理人市场化选聘模拟试卷及完整答案详解一套
- 2025年内江市市本级部分事业单位公开考核招聘工作人员(第二批)的模拟试卷及答案详解(夺冠系列)
- 2025年大数据隐私保护技术在医疗行业合规应用深度研究报告
- 2025年数字孪生在城市绿地系统规划与建设中的生态景观设计理念与案例报告
- 2025年文化娱乐产业消费者行为模式解析与市场细分报告
- 2025年工业互联网平台IPv6技术升级对工业数据安全的影响报告001
- 2025年4月广东深圳市光明区教育局招聘公办幼儿园工作人员模拟试卷及参考答案详解一套
- Unit 1 Friendship-Section 4 Focus on culture 说课稿英文版 沪教版英语七年级上册
- 基金考试题库大全及答案
- 2025至2030中国生物基化学品行业产业运行态势及投资规划深度研究报告
- 雾化吸入课件
- 航海船舶运输管理总结
- 2025年注册安全工程师实务《其他安全》试题+答案
- 采购战略合作协议范本5篇
- 财务部安全生产培训报告课件
- 会计毕业论文烟草专业
- 年产5万吨电熔锆刚玉新材料扩建项目环境影响报告表
- 慢性阻塞性肺疾病伴肺曲霉病诊治和管理专家共识解读课件
- 2025人教版八年级道德与法治上册全册知识点
评论
0/150
提交评论