`
hyshucom
  • 浏览: 824556 次
文章分类
社区版块
存档分类
最新评论

android过滤第三应用列表

 
阅读更多

转载自:http://blog.csdn.net/santicom/article/details/7465751

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

  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,

  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

  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>


分享到:
评论

相关推荐

    Android中获取应用程序列表信息

    总结来说,通过Android的`PackageManager`服务,开发者可以轻松地获取设备上的所有应用、系统应用、第三方应用以及满足特定条件的应用列表。在实际开发中,可以根据需要对这些信息进行过滤和处理,以实现各种功能。...

    android快捷卸载第三方应用

    在用户界面设计上,可能需要显示一个应用列表,展示所有可卸载的第三方应用。这可以通过遍历`PackageInfo`数组,筛选出第三方应用,并将其相关信息(如应用名、图标等)展示在列表视图中。用户选择某个应用后,触发...

    分别获取所有、系统、第三方、SD卡应用的信息

    这个类提供了获取所有应用列表的方法,例如`getInstalledPackages()`。通过遍历返回的`PackageInfo`对象,我们可以获取应用的名称、图标、版本号、权限等信息。 系统应用信息获取: 获取系统应用信息的过程与获取...

    解决全志A64 Android6.0第三方应用无法接收到开机广播补丁

    3. **修改源码**:删除或注释掉限制第三方应用接收开机广播的代码,确保所有应用都有权接收开机广播。 4. **编译系统镜像**:修改后,需要重新编译系统镜像,这可能需要完整的Android构建环境和相关工具链。 5. **...

    Android打开第三方应用

    本篇文章将详细阐述如何在Android中进行第三方应用的打开操作。 首先,我们需要理解Android中的Intent。Intent在Android中扮演着消息传递的角色,它可以用来启动活动(Activity)、服务(Service)或者广播接收器...

    Android获取手机安装APP列表

    3. **过滤系统应用与第三方应用**: `ApplicationInfo`类有一个成员变量`flags`,它包含应用的各种标志。其中,`ApplicationInfo.FLAG_SYSTEM`表示系统应用。我们可以遍历`installedApps`列表,根据`flags`判断每个...

    Google Android应用案例开发大全(随书光盘)【源码】第3章

    本章节的源码是《Google Android应用案例开发大全》一书的配套材料,专注于第三章的内容,旨在帮助读者深入理解Android开发的核心概念和技术。 在第三章中,我们可能涉及以下几个关键知识点: 1. **Android Studio...

    Android-监听自身应用卸载,并在卸载之后,使用libcurl三方库进行一次三方请求,或者启动网页的实例工程

    【Android-监听自身应用卸载】是Android开发中一个特殊的需求,它涉及到系统广播的注册与接收、服务的实现以及第三方库libcurl的使用。在这个实例工程中,开发者旨在实现当应用被卸载时,自动触发一个网络请求,或者...

    android城市列表选择、定位

    实现这种效果通常需要自定义View或使用第三方库,例如ViewPager2,配合适配器展示城市卡片,同时处理滑动事件和选中状态。 综上所述,"android城市列表选择、定位"是一个涉及数据管理、用户界面设计、地理位置服务...

    android根据字母排序的城市列表

    在Android开发中,构建一个根据字母排序的城市列表是一项常见的任务,尤其在开发地图应用或信息检索类应用时。这个任务涉及到UI设计、数据处理以及排序算法等多个知识点。下面将详细阐述实现这一功能所需的关键技术...

    Android开发与应用——张荣,原书配套课件

    第3章 Android应用程序框架 3.1 第一个Android应用程序 3.2 Android项目结构 3.3 APK文件结构 3.4 Android应用程序权限 3.5 Activity及其生命周期 3.5.1 什么是Activity 3.5.2 Activity生命周期 3.6...

    Android程序研发源码Android 图像过滤器.rar

    1. **OpenCV库**:OpenCV(开源计算机视觉库)是Android图像处理常用的第三方库,它提供了大量的图像处理函数,如滤波、色彩转换、边缘检测等。开发者可以利用OpenCV的API来实现图像过滤器功能。 2. **Bitmap类**:...

    Android-SearchFilter用Kotlin实现的搜索过滤器动画

    同时,`RecyclerView`或`AdapterView`通常用于展示过滤后的列表,它们可以配合动画库,如`androidx.core.animation`或第三方库`Lottie`,实现平滑的过渡动画。 `Yalantis-SearchFilter-5e7f141`可能是项目的Git仓库...

    android应用开发详解第五章

    10. **第三方库集成**:许多开发者会使用像Retrofit、Butter Knife、Glide等库来简化开发。这部分可能介绍了如何添加依赖,以及这些库的基本用法。 通过学习并实践这些源代码,开发者可以更好地掌握Android应用开发...

    Android实现通讯录(带有拼音首字母排序的和过滤搜索

    Android系统本身并不提供直接的汉字转拼音服务,但我们可以借助第三方库,如Pinyin4j或Google的libphonenumber。这里以Pinyin4j为例,它是一个Java库,可以将汉字转换为拼音。首先,需要将Pinyin4j库导入项目,然后...

    Android 图像过滤器.zip

    6. **第三方库**:Android社区开发了许多图像处理库,如Picasso、Glide、Fresco等,它们提供了丰富的图像处理功能,包括滤镜效果。其中,比如GLIDE库,可以方便地集成自定义的图像滤镜。 7. **滤镜效果实现**:常见...

    Android传感器应用实例

    在Android平台上,传感器应用开发是一项重要的技术,它允许开发者创建出与用户环境和设备状态紧密交互的应用。"Android传感器应用实例"是一个专为学习Android传感器开发而设计的项目,通过两个具体的Activity,深入...

    88个经典Android应用程序打包下载【精品】

    总之,这88个经典Android应用程序的源代码提供了丰富的学习素材,涵盖了Android开发的各个方面,包括但不限于组件交互、UI设计、数据存储、网络通信、权限管理和第三方库的使用。通过深入学习和实践,不仅可以提升...

    获取Android应用包名

    这将列出所有安装在设备上的第三方应用的包名。如果只想查看特定应用,可以添加过滤器: ```bash adb shell pm list packages -f | grep com.example.myapp ``` 了解如何获取Android应用包名对于开发者来说非常...

Global site tag (gtag.js) - Google Analytics