-1

How do i display a list of apps having this permission in a list view?

<uses-permission android:name="android.permission.INTERNET" />

I have found a code here, but i don't know how to show that in my list view? any help will be highly appreciated! :D

private ArrayList<String> getInstalledApps(Context context) {
    ArrayList<String> results = new ArrayList<String>();
    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))
            results.add("" + pk.applicationInfo.loadLabel(packageManager));
    }

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

    return results;
}

here is my main activity with my listview

    package com.example.antivirus;

    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;

    public class MainActivity extends Activity {

        // Array of strings...
        String[] mobileArray = { "Android", "IPhone", "WindowsMobile",
                "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X" };

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            ArrayAdapter adapter = new ArrayAdapter<String>(this,
                    R.layout.activity_listview, mobileArray);

            ListView listView = (ListView) findViewById(R.id.mobile_list);
            listView.setAdapter(adapter);
        }
    }
Community
  • 1
  • 1
Emily
  • 1
  • 1
  • 5

2 Answers2

0

You can refer to this link Android List View

for showing Arraylist into a list view in android.

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))
            results.add("" + pk.applicationInfo.loadLabel(packageManager));
    }

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

    return results;
}

Use your array list (results) as a global variable and place your method inside activity below onCreate()

sherlock
  • 97
  • 5
  • have added proper link – sherlock Jan 12 '16 at 10:12
  • please refer link http://stackoverflow.com/questions/2169294/how-to-add-manifest-permission-to-android-application – sherlock Jan 12 '16 at 10:41
  • if (PackageManager.PERMISSION_GRANTED == packageManager .checkPermission(Manifest.permission.INTERNET, pk.packageName) || PackageManager.PERMISSION_GRANTED == packageManager .checkPermission(Manifest.permission.GET_ACCOUNTS, pk.packageName)) This should work I guess – sherlock Jan 12 '16 at 10:46
  • its working , im accepting it . also can you tell me how do i handle clicks on list items, i have the code for opening an app's info where you can uninstall it and i want to do the same here , ill post a new question if you know how to do that – Emily Jan 12 '16 at 10:53
  • yes please accept this, and post a new question for clicks, or follow this link http://stackoverflow.com/a/17851698/2328990 – sherlock Jan 12 '16 at 10:57
  • here is my question please have a look http://stackoverflow.com/questions/34742118/enable-clicking-on-list-items-android – Emily Jan 12 '16 at 11:12
0

This is the code I have tested it and it works fine.

import android.Manifest;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class MainActivity extends AppCompatActivity {
ArrayList<String>list;
    ListView lv;
    ArrayAdapter aa;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        list=new ArrayList<String>();
        list=getInstalledApps(this);
        lv= (ListView) findViewById(R.id.listview);
        aa=new ArrayAdapter(this,android.R.layout.simple_list_item_1,list);  //Check this
        lv.setAdapter(aa);
    }

    private ArrayList<String> getInstalledApps(Context context) {
        ArrayList<String> results = new ArrayList<String>();
        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.d("Mayur", ""+pk.applicationInfo.loadLabel(packageManager));
                continue;
            }
            if (PackageManager.PERMISSION_GRANTED == packageManager
                    .checkPermission(Manifest.permission.INTERNET,
                            pk.packageName))
                results.add("" + pk.applicationInfo.loadLabel(packageManager));
        }

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

        return results;
    }
}

This is the xml file

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.administrator.statepermission.MainActivity">

   <ListView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:id="@+id/listview"
       ></ListView>
</RelativeLayout>
Mayur_Thakur
  • 651
  • 8
  • 15