android过滤第三应用列表

本文介绍了如何使用Java创建一个活动,实现从应用列表中选择和过滤特定应用的功能,包括调用所有匹配的第三方应用和去除特定应用的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:http://blog.youkuaiyun.com/santicom/article/details/7465751

调用所有匹配的第三应用:

[java] view plain copy
  1. publicclassAppFilterActivityextendsActivity
  2. {
  3. @Override
  4. publicvoidonCreate(BundlesavedInstanceState)
  5. {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.main);
  8. Intentintent=newIntent(Intent.ACTION_ATTACH_DATA);
  9. intent.setType("image/png");
  10. IntentchooserIntent=Intent.createChooser(intent,"Selectapp");
  11. if(chooserIntent==null)
  12. {
  13. return;
  14. }
  15. startActivity(chooserIntent);
  16. }
  17. }


过滤app列表中的某个app:

1,

[java] view plain copy
  1. publicclassAppFilterActivityextendsActivity
  2. {
  3. @Override
  4. publicvoidonCreate(BundlesavedInstanceState)
  5. {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.main);
  8. Intentintent=newIntent(Intent.ACTION_ATTACH_DATA);
  9. intent.setType("image/png");
  10. showSetAsList(intent);
  11. }
  12. privatevoidshowSetAsList(Intentintent)
  13. {
  14. PackageManagermPackageManager=AppFilterActivity.this.getPackageManager();
  15. List<ResolveInfo>mShareAppLst=mPackageManager.queryIntentActivities(intent,0);
  16. List<ResolveInfo>mAppLst=newArrayList<ResolveInfo>();
  17. intnumActivities=mShareAppLst.size();
  18. //遍历设置为列表,移除设置为列表中的联系人
  19. for(inti=0;i<numActivities;i++)
  20. {
  21. ResolveInforeinfo=mShareAppLst.get(i);
  22. if(reinfo.activityInfo.name.equals("com.android.contacts.activities.AttachPhotoActivity"))
  23. {
  24. continue;
  25. }
  26. mAppLst.add(reinfo);
  27. }
  28. ChooseAppAdaptermAdapter=newChooseAppAdapter(mAppLst,AppFilterActivity.this.getApplicationContext());
  29. AlertDialog.BuilderalertDialog=newAlertDialog.Builder(AppFilterActivity.this);
  30. alertDialog.setTitle("selectapp");
  31. alertDialog.setAdapter(mAdapter,newShareAppItemClickListener(intent,mAppLst,mAdapter)).create().show();
  32. }
  33. publicclassChooseAppAdapterextendsBaseAdapter
  34. {
  35. privateList<ResolveInfo>mDialogList=null;
  36. privatePackageManagermPackageManager=null;
  37. privateLayoutInflatermInflater=null;
  38. publicChooseAppAdapter(List<ResolveInfo>mDialogList,Contextcontext)
  39. {
  40. this.mDialogList=mDialogList;
  41. this.mPackageManager=context.getPackageManager();
  42. sort();
  43. mInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  44. }
  45. @Override
  46. publicintgetCount()
  47. {
  48. returnmDialogList!=null?mDialogList.size():0;
  49. }
  50. @Override
  51. publicObjectgetItem(intposition)
  52. {
  53. returnposition;
  54. }
  55. @Override
  56. publiclonggetItemId(intposition)
  57. {
  58. returnposition;
  59. }
  60. @Override
  61. publicViewgetView(intposition,ViewconvertView,ViewGroupparent)
  62. {
  63. if(position>=mDialogList.size())
  64. {
  65. returnnull;
  66. }
  67. Viewview;
  68. if(convertView==null)
  69. {
  70. view=mInflater.inflate(R.layout.share_menu_item,parent,false);
  71. }else
  72. {
  73. view=convertView;
  74. }
  75. ImageViewcategoryIcon=(ImageView)view.findViewById(R.id.menu_icon);
  76. categoryIcon.setImageDrawable(((ResolveInfo)mDialogList.get(position)).loadIcon(mPackageManager));
  77. TextViewcategoryName=(TextView)view.findViewById(R.id.menu_title);
  78. categoryName.setText(((ResolveInfo)mDialogList.get(position)).loadLabel(mPackageManager));
  79. returnview;
  80. }
  81. publicvoidreleaseData()
  82. {
  83. mDialogList.clear();
  84. mPackageManager=null;
  85. mInflater=null;
  86. }
  87. publicvoidsort()
  88. {
  89. if(getCount()>1)
  90. {
  91. ResolveInfo.DisplayNameComparatorrComparator=newResolveInfo.DisplayNameComparator(mPackageManager);
  92. Collections.sort(mDialogList,rComparator);
  93. }
  94. }
  95. }
  96. publicclassShareAppItemClickListenerimplementsDialogInterface.OnClickListener
  97. {
  98. Intentintent=null;
  99. List<ResolveInfo>mShareAppLst=null;
  100. ChooseAppAdaptermAdapter=null;
  101. publicShareAppItemClickListener(Intentintent,List<ResolveInfo>mShareAppLst,ChooseAppAdaptermAdapter)
  102. {
  103. this.intent=intent;
  104. this.mShareAppLst=mShareAppLst;
  105. this.mAdapter=mAdapter;
  106. }
  107. @Override
  108. publicvoidonClick(DialogInterfacedialog,intwhich)
  109. {
  110. IntentresolvedIntent=newIntent(intent);
  111. ResolveInfoinfo=mShareAppLst.get(which);
  112. ActivityInfoai=info.activityInfo;
  113. resolvedIntent.setComponent(newComponentName(ai.applicationInfo.packageName,ai.name));
  114. try
  115. {
  116. startActivity(resolvedIntent);
  117. }catch(Exceptionex)
  118. {
  119. ex.printStackTrace();
  120. }
  121. releaseData();
  122. }
  123. publicvoidreleaseData()
  124. {
  125. intent=null;
  126. mShareAppLst.clear();
  127. mAdapter.releaseData();
  128. }
  129. }
  130. }


2, share_menu_item.xml

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. android:gravity="center_vertical"
  6. android:orientation="horizontal">
  7. <ImageView
  8. android:id="@+id/menu_icon"
  9. android:layout_width="48dip"
  10. android:layout_height="48dip"
  11. android:layout_marginBottom="2dip"
  12. android:layout_marginLeft="5dip"
  13. android:layout_marginTop="2dip"/>
  14. <TextView
  15. android:id="@+id/menu_title"
  16. android:layout_width="match_parent"
  17. android:layout_height="wrap_content"
  18. android:ellipsize="marquee"
  19. android:gravity="center_vertical"
  20. android:paddingLeft="10dip"
  21. android:textAppearance="?android:attr/textAppearanceMedium"/>
  22. </LinearLayout>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值