转载自:http://blog.youkuaiyun.com/santicom/article/details/7465751
调用所有匹配的第三应用:
- publicclassAppFilterActivityextendsActivity
- {
- @Override
- publicvoidonCreate(BundlesavedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Intentintent=newIntent(Intent.ACTION_ATTACH_DATA);
- intent.setType("image/png");
- IntentchooserIntent=Intent.createChooser(intent,"Selectapp");
- if(chooserIntent==null)
- {
- return;
- }
- startActivity(chooserIntent);
- }
- }
过滤app列表中的某个app:
1,
- publicclassAppFilterActivityextendsActivity
- {
- @Override
- publicvoidonCreate(BundlesavedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Intentintent=newIntent(Intent.ACTION_ATTACH_DATA);
- intent.setType("image/png");
- showSetAsList(intent);
- }
- privatevoidshowSetAsList(Intentintent)
- {
- PackageManagermPackageManager=AppFilterActivity.this.getPackageManager();
- List<ResolveInfo>mShareAppLst=mPackageManager.queryIntentActivities(intent,0);
- List<ResolveInfo>mAppLst=newArrayList<ResolveInfo>();
- intnumActivities=mShareAppLst.size();
- //遍历设置为列表,移除设置为列表中的联系人
- for(inti=0;i<numActivities;i++)
- {
- ResolveInforeinfo=mShareAppLst.get(i);
- if(reinfo.activityInfo.name.equals("com.android.contacts.activities.AttachPhotoActivity"))
- {
- continue;
- }
- mAppLst.add(reinfo);
- }
- ChooseAppAdaptermAdapter=newChooseAppAdapter(mAppLst,AppFilterActivity.this.getApplicationContext());
- AlertDialog.BuilderalertDialog=newAlertDialog.Builder(AppFilterActivity.this);
- alertDialog.setTitle("selectapp");
- alertDialog.setAdapter(mAdapter,newShareAppItemClickListener(intent,mAppLst,mAdapter)).create().show();
- }
- publicclassChooseAppAdapterextendsBaseAdapter
- {
- privateList<ResolveInfo>mDialogList=null;
- privatePackageManagermPackageManager=null;
- privateLayoutInflatermInflater=null;
- publicChooseAppAdapter(List<ResolveInfo>mDialogList,Contextcontext)
- {
- this.mDialogList=mDialogList;
- this.mPackageManager=context.getPackageManager();
- sort();
- mInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- }
- @Override
- publicintgetCount()
- {
- returnmDialogList!=null?mDialogList.size():0;
- }
- @Override
- publicObjectgetItem(intposition)
- {
- returnposition;
- }
- @Override
- publiclonggetItemId(intposition)
- {
- returnposition;
- }
- @Override
- publicViewgetView(intposition,ViewconvertView,ViewGroupparent)
- {
- if(position>=mDialogList.size())
- {
- returnnull;
- }
- Viewview;
- if(convertView==null)
- {
- view=mInflater.inflate(R.layout.share_menu_item,parent,false);
- }else
- {
- view=convertView;
- }
- ImageViewcategoryIcon=(ImageView)view.findViewById(R.id.menu_icon);
- categoryIcon.setImageDrawable(((ResolveInfo)mDialogList.get(position)).loadIcon(mPackageManager));
- TextViewcategoryName=(TextView)view.findViewById(R.id.menu_title);
- categoryName.setText(((ResolveInfo)mDialogList.get(position)).loadLabel(mPackageManager));
- returnview;
- }
- publicvoidreleaseData()
- {
- mDialogList.clear();
- mPackageManager=null;
- mInflater=null;
- }
- publicvoidsort()
- {
- if(getCount()>1)
- {
- ResolveInfo.DisplayNameComparatorrComparator=newResolveInfo.DisplayNameComparator(mPackageManager);
- Collections.sort(mDialogList,rComparator);
- }
- }
- }
- publicclassShareAppItemClickListenerimplementsDialogInterface.OnClickListener
- {
- Intentintent=null;
- List<ResolveInfo>mShareAppLst=null;
- ChooseAppAdaptermAdapter=null;
- publicShareAppItemClickListener(Intentintent,List<ResolveInfo>mShareAppLst,ChooseAppAdaptermAdapter)
- {
- this.intent=intent;
- this.mShareAppLst=mShareAppLst;
- this.mAdapter=mAdapter;
- }
- @Override
- publicvoidonClick(DialogInterfacedialog,intwhich)
- {
- IntentresolvedIntent=newIntent(intent);
- ResolveInfoinfo=mShareAppLst.get(which);
- ActivityInfoai=info.activityInfo;
- resolvedIntent.setComponent(newComponentName(ai.applicationInfo.packageName,ai.name));
- try
- {
- startActivity(resolvedIntent);
- }catch(Exceptionex)
- {
- ex.printStackTrace();
- }
- releaseData();
- }
- publicvoidreleaseData()
- {
- intent=null;
- mShareAppLst.clear();
- mAdapter.releaseData();
- }
- }
- }
2, share_menu_item.xml
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:orientation="horizontal">
- <ImageView
- android:id="@+id/menu_icon"
- android:layout_width="48dip"
- android:layout_height="48dip"
- android:layout_marginBottom="2dip"
- android:layout_marginLeft="5dip"
- android:layout_marginTop="2dip"/>
- <TextView
- android:id="@+id/menu_title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:ellipsize="marquee"
- android:gravity="center_vertical"
- android:paddingLeft="10dip"
- android:textAppearance="?android:attr/textAppearanceMedium"/>
- </LinearLayout>