OnItemClickListener传递选择的方法的应用程序包名称...帮助 [英] OnItemClickListener that passes the Package Name of the app selected to a method... Help

查看:102
本文介绍了OnItemClickListener传递选择的方法的应用程序包名称...帮助的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

更新:现在找包名称,而不是PID

UPDATE: Now looking for Package Name as opposed to PID

我有diplays设备上的所有安装的应用程序的列表视图的应用程序。我想创建一个选择传递给方法的应用程序软件包名OnItemClickListener。

I have an app that diplays a listview of all the installed apps on the device. I want to create an OnItemClickListener that passes the Package Name of the app selected to a method.

下面是我的code:

public class Main extends ListActivity {

    private static final int ACTIVITY_CREATE=0;
    public static final int Menu1 = Menu.FIRST;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        final PackageManager pm = this.getPackageManager();

        Intent intent = new Intent(Intent.ACTION_MAIN, null);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);

        final ArrayList<ResolveInfo> list =
                (ArrayList<ResolveInfo>) pm.queryIntentActivities(intent, 
                        PackageManager.PERMISSION_GRANTED);
        for (ResolveInfo rInfo : list)
        {
            Log.i("Installed Applications " + rInfo.activityInfo.
                    applicationInfo.loadLabel(pm).toString(), null);
        }

        final ArrayAdapter<ResolveInfo> adapter = 
            new ArrayAdapter<ResolveInfo>(this, R.layout.list_item, list)
            {
            @Override
            public View getView(int position, View convertView, ViewGroup parent)
            {
                if (convertView == null)
                    convertView = LayoutInflater.from(parent.getContext()).
                        inflate(R.layout.list_item, parent, false);

                final String text = list.get(position).activityInfo.
                    applicationInfo.loadLabel(pm).toString();
                ((TextView)convertView.findViewById(R.id.text)).setText(text);

                final Drawable drawable = list.get(position).activityInfo.applicationInfo.loadIcon(pm);
                ((ImageView)convertView.findViewById(R.id.image)).setImageDrawable(drawable);

                return convertView;
            }

            };
        setListAdapter(adapter);

        ListView lv = getListView();
        lv.setTextFilterEnabled(true);
        lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

                // On Item Click Activity

                // This is where I would like to pass the package name to a method
            }
          });
    }

任何帮助将大大AP preciated!

Any help would be greatly appreciated!

推荐答案

您可以检索的 activityInfo 成员包名的 ResolveInfo 实例,其项目您刚刚点击:

You can retrieve the package name for the activityInfo member of the ResolveInfo instance whose item you just clicked on:

lv.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    {
        final String packageName = list.get(position).activityInfo.packageName;
        Log.i("PACKAGE", packageName);
        //TODO: Pass this packageName to a method
    }
});

这篇关于OnItemClickListener传递选择的方法的应用程序包名称...帮助的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆