android过滤第三应用列表
16lz
2022-05-25
转载自:http://blog.csdn.net/santicom/article/details/7465751
调用所有匹配的第三应用:
[java] view plain copy- public class AppFilterActivity extends Activity
- {
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
- intent.setType("image/png");
- Intent chooserIntent = Intent.createChooser(intent, "Select app");
- if (chooserIntent == null)
- {
- return;
- }
- startActivity(chooserIntent);
- }
- }
过滤app列表中的某个app:
1,
[java] view plain copy- public class AppFilterActivity extends Activity
- {
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
- intent.setType("image/png");
- showSetAsList(intent);
- }
- private void showSetAsList(Intent intent)
- {
- PackageManager mPackageManager = AppFilterActivity.this.getPackageManager();
- List
mShareAppLst = mPackageManager.queryIntentActivities(intent, 0); - List
mAppLst = new ArrayList (); - int numActivities = mShareAppLst.size();
- // 遍历设置为列表,移除设置为列表中的联系人
- for (int i = 0; i < numActivities; i++)
- {
- ResolveInfo reinfo = mShareAppLst.get(i);
- if (reinfo.activityInfo.name.equals("com.android.contacts.activities.AttachPhotoActivity"))
- {
- continue;
- }
- mAppLst.add(reinfo);
- }
- ChooseAppAdapter mAdapter = new ChooseAppAdapter(mAppLst, AppFilterActivity.this.getApplicationContext());
- AlertDialog.Builder alertDialog = new AlertDialog.Builder(AppFilterActivity.this);
- alertDialog.setTitle("select app");
- alertDialog.setAdapter(mAdapter, new ShareAppItemClickListener(intent, mAppLst, mAdapter)).create().show();
- }
- public class ChooseAppAdapter extends BaseAdapter
- {
- private List
mDialogList = null; - private PackageManager mPackageManager = null;
- private LayoutInflater mInflater = null;
- public ChooseAppAdapter(List
mDialogList, Context context) - {
- this.mDialogList = mDialogList;
- this.mPackageManager = context.getPackageManager();
- sort();
- mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- }
- @Override
- public int getCount()
- {
- return mDialogList != null ? mDialogList.size() : 0;
- }
- @Override
- public Object getItem(int position)
- {
- return position;
- }
- @Override
- public long getItemId(int position)
- {
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent)
- {
- if (position >= mDialogList.size())
- {
- return null;
- }
- View view;
- if (convertView == null)
- {
- view = mInflater.inflate(R.layout.share_menu_item, parent, false);
- } else
- {
- view = convertView;
- }
- ImageView categoryIcon = (ImageView) view.findViewById(R.id.menu_icon);
- categoryIcon.setImageDrawable(((ResolveInfo) mDialogList.get(position)).loadIcon(mPackageManager));
- TextView categoryName = (TextView) view.findViewById(R.id.menu_title);
- categoryName.setText(((ResolveInfo) mDialogList.get(position)).loadLabel(mPackageManager));
- return view;
- }
- public void releaseData()
- {
- mDialogList.clear();
- mPackageManager = null;
- mInflater = null;
- }
- public void sort()
- {
- if (getCount() > 1)
- {
- ResolveInfo.DisplayNameComparator rComparator = new ResolveInfo.DisplayNameComparator(mPackageManager);
- Collections.sort(mDialogList, rComparator);
- }
- }
- }
- public class ShareAppItemClickListener implements DialogInterface.OnClickListener
- {
- Intent intent = null;
- List
mShareAppLst = null; - ChooseAppAdapter mAdapter = null;
- public ShareAppItemClickListener(Intent intent, List
mShareAppLst, ChooseAppAdapter mAdapter) - {
- this.intent = intent;
- this.mShareAppLst = mShareAppLst;
- this.mAdapter = mAdapter;
- }
- @Override
- public void onClick(DialogInterface dialog, int which)
- {
- Intent resolvedIntent = new Intent(intent);
- ResolveInfo info = mShareAppLst.get(which);
- ActivityInfo ai = info.activityInfo;
- resolvedIntent.setComponent(new ComponentName(ai.applicationInfo.packageName, ai.name));
- try
- {
- startActivity(resolvedIntent);
- } catch (Exception ex)
- {
- ex.printStackTrace();
- }
- releaseData();
- }
- public void releaseData()
- {
- intent = null;
- mShareAppLst.clear();
- mAdapter.releaseData();
- }
- }
- }
2, share_menu_item.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns: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>
更多相关文章
- android实践项目八做一个下载读条
- Android调用RESTful WCF服务
- Android(安卓)一个自定义View需要实现哪些方法
- android调用邮件应用发送email
- Android(安卓)中获取屏幕长度及宽度
- android 应用异常可以引起android系统崩溃重启
- Android(安卓)camera调用出现错误解决方法
- Android复习(三)
- Android实用代码