使点击列表项的android [英] enable clicking on list items android

查看:131
本文介绍了使点击列表项的android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的code显示其安装在ListView特定权限的应用程序。我想打开的设置,你可以卸载的每个项目(应用程序)。如何做呢应用程序?

这里是打开应用程序的设置片段

 的packageName =com.wagtailapp;
    尝试{
        //打开特定的应用程序信息页面:
        意向意图=新意图(
                android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
        intent.setData(Uri.parse(套餐+的packageName));
        startActivity(意向);
    }赶上(ActivityNotFoundException E){
        // e.printStackTrace();
        //打开通用应用程序页面:
        意向意图=新意图(
                android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
        startActivity(意向);

这里是我的活动

 公共类MainActivity延伸活动{    ArrayList的<串GT;结果=新的ArrayList<串GT;();     @覆盖
       保护无效的onCreate(捆绑savedInstanceState){
          super.onCreate(savedInstanceState);
          的setContentView(R.layout.activity_main);
          getInstalledApps(本);
          ArrayAdapter适配器=新ArrayAdapter<串GT;(这一点,R.layout.activity_listview,结果);          ListView控件的ListView =(ListView控件)findViewById(R.id.mobile_list);
          listView.setAdapter(适配器);
       }      私人的ArrayList<串GT; getInstalledApps(上下文的背景下){
        软件包管理系统软件包管理系统= context.getPackageManager();
        清单< PackageInfo> APPLIST = packageManager.getInstalledPackages(0);
        迭代器< PackageInfo>它= applist.iterator();
        而(it.hasNext()){
            PackageInfo PK =(PackageInfo)it.next();
            如果((pk.applicationInfo.flags&放大器;!ApplicationInfo.FLAG_SYSTEM)= 0){
                Log.v(使用互联网=系统的应用,+ pk.applicationInfo.loadLabel(软件包管理系统));
                继续;
            }            如果(PackageManager.PERMISSION_GRANTED ==软件包管理系统.checkPermission(Manifest.permission.INTERNET,pk.packageName)||
                    PackageManager.PERMISSION_GRANTED ==软件包管理系统.checkPermission(Manifest.permission.READ_EXTERNAL_STORAG​​E,pk.packageName))
                results.add(+ pk.applicationInfo.loadLabel(软件包管理系统));
        }        Log.v(,results.toString使用Internet =程序());        返回结果;
    }
}


解决方案
你的onCreate()以下listView.setAdapter(适配器)在

本贴code;

  listView.setOnItemClickListener(新OnItemClickListener(){
        @覆盖
        公共无效onItemClick(适配器视图<>母公司,观景,INT位置,
                长ID){
            字符串的packageName = results.get(位置);
            意向意图=新意图(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setData(Uri.parse(套餐+的packageName));
            startActivity(意向);
        }
    });

my code displays installed apps having specific permissions in a listview. i want to open the settings where you can uninstall apps on each list item (app) .How do i do that?

here is the snippet for opening app's settings

packageName = "com.wagtailapp";
    try {
        // Open the specific App Info page:
        Intent intent = new Intent(
                android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
        intent.setData(Uri.parse("package:" + packageName));
        startActivity(intent);
    } catch (ActivityNotFoundException e) {
        // e.printStackTrace();
        // Open the generic Apps page:
        Intent intent = new Intent(
                android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
        startActivity(intent);

here is my activity

public class MainActivity extends Activity {

    ArrayList<String> results = new ArrayList<String>();

     @Override
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          getInstalledApps(this);
          ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_listview, results);

          ListView listView = (ListView) findViewById(R.id.mobile_list);
          listView.setAdapter(adapter);
       }

      private ArrayList<String> getInstalledApps(Context context) {
        PackageManager packageManager = context.getPackageManager();
        List<PackageInfo> applist = packageManager.getInstalledPackages(0);
        Iterator<PackageInfo> it = applist.iterator();
        while (it.hasNext()) {
            PackageInfo pk = (PackageInfo) it.next();
            if ((pk.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
                Log.v("system app using internet = ", ""+pk.applicationInfo.loadLabel(packageManager));
                continue;
            }

            if (PackageManager.PERMISSION_GRANTED == packageManager .checkPermission(Manifest.permission.INTERNET, pk.packageName) ||
                    PackageManager.PERMISSION_GRANTED == packageManager .checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, pk.packageName))
                results.add("" + pk.applicationInfo.loadLabel(packageManager));
        }

        Log.v("app using internet = ", results.toString());

        return results;
    }
}

解决方案

Paste this code inside your onCreate() below listView.setAdapter(adapter);

 listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            String packageName = results.get(position);
            Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setData(Uri.parse("package:" + packageName));
            startActivity(intent);
        }
    });

这篇关于使点击列表项的android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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