Advertisement
nigatigga

Untitled

Sep 2nd, 2014
441
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.35 KB | None | 0 0
  1. package com.spicycurryman.getdisciplined10.app;
  2.  
  3. import android.app.ActionBar;
  4. import android.app.ProgressDialog;
  5. import android.content.Context;
  6. import android.content.pm.ActivityInfo;
  7. import android.content.pm.ApplicationInfo;
  8. import android.content.pm.PackageInfo;
  9. import android.content.pm.PackageItemInfo;
  10. import android.content.pm.PackageManager;
  11. import android.database.Cursor;
  12. import android.database.MatrixCursor;
  13. import android.os.AsyncTask;
  14. import android.os.Bundle;
  15. import android.provider.BaseColumns;
  16. import android.support.v7.app.ActionBarActivity;
  17. import android.support.v7.widget.SearchView;
  18. import android.text.Editable;
  19. import android.text.Spannable;
  20. import android.text.SpannableString;
  21. import android.text.TextWatcher;
  22. import android.view.Menu;
  23. import android.view.MenuInflater;
  24. import android.view.MenuItem;
  25. import android.view.View;
  26. import android.widget.AdapterView;
  27. import android.widget.AdapterView.OnItemClickListener;
  28. import android.widget.EditText;
  29. import android.widget.FilterQueryProvider;
  30. import android.widget.ListView;
  31. import android.widget.SimpleCursorAdapter;
  32. import android.widget.TextView;
  33.  
  34. import com.ibc.android.demo.appslist.app.ApkAdapter;
  35.  
  36. import java.util.ArrayList;
  37. import java.util.Collections;
  38. import java.util.Comparator;
  39. import java.util.List;
  40.  
  41.  
  42.  
  43. public class InstalledAppActivity extends ActionBarActivity
  44.         implements OnItemClickListener, TextWatcher {
  45.  
  46.     PackageManager packageManager;
  47.     ListView apkList;
  48.     private SearchView mSearchView;
  49.     private TextView mStatusView;
  50.     private SCA adapter;
  51.  
  52.  
  53.  
  54.     @Override
  55.     protected void onCreate(Bundle savedInstanceState) {
  56.  
  57.  
  58.         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
  59.  
  60.         super.onCreate(savedInstanceState);
  61.         setTheme(R.style.Theme_Light_appalled);
  62.  
  63.         SpannableString s = new SpannableString("Installed Apps");
  64.         s.setSpan(new TypefaceSpan(this, "ralewaylight.otf"), 0, s.length(),
  65.                 Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  66.  
  67. // Update the action bar title with the TypefaceSpan instance
  68.         ActionBar actionBar = getActionBar();
  69.         actionBar.setTitle(s);
  70.         getActionBar().setDisplayHomeAsUpEnabled(true);
  71.  
  72.         actionBar.setHomeButtonEnabled(true);
  73.  
  74.  
  75.  
  76.         setContentView(R.layout.user_installed);
  77.  
  78.  
  79.         EditText et = (EditText) findViewById(R.id.layoutsearch);
  80.         et.addTextChangedListener(this);
  81.  
  82.         ListView lv = (ListView) findViewById(R.id.applist);
  83.         adapter = new SCA(this);
  84.         lv.setAdapter(adapter);
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91. // Update the action bar title with the TypefaceSpan instance
  92.  
  93.         packageManager = InstalledAppActivity.this.getPackageManager();
  94.  
  95.  
  96.         /*To filter out System apps*/
  97.  
  98.         apkList = (ListView) findViewById(R.id.applist);
  99.  
  100.         new LoadApplications(InstalledAppActivity.this.getApplicationContext()).execute();
  101.  
  102.  
  103.     }
  104.  
  105.  
  106.  
  107.     @Override
  108.     public boolean onCreateOptionsMenu(Menu menu) {
  109.         MenuInflater inflater = getMenuInflater();
  110.  
  111.         inflater.inflate(R.menu.block, menu);
  112.  
  113.         MenuItem searchItem = menu.findItem(R.id.action_search);
  114.  
  115.         mSearchView = (SearchView) searchItem.getActionView();
  116.  
  117.         //setupSearchView(searchItem);
  118.  
  119.         return true;
  120.  
  121.     }
  122.  
  123.  
  124.  
  125.  
  126.  
  127.     @Override
  128.     public boolean onPrepareOptionsMenu(Menu menu) {
  129.         return super.onPrepareOptionsMenu(menu);
  130.  
  131.     }
  132.  
  133.  
  134.  
  135.  
  136.     @Override
  137.     public boolean onOptionsItemSelected(MenuItem item)
  138.     {
  139.         switch (item.getItemId())
  140.         {
  141.             case android.R.id.home:
  142.                 onBackPressed();
  143.                 break;
  144.  
  145.             default:
  146.                 return super.onOptionsItemSelected(item);
  147.         }
  148.         return true;
  149.     }
  150.     @Override
  151.     public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  152.     }
  153.  
  154.     @Override
  155.     public void onTextChanged(CharSequence s, int start, int before, int count) {
  156.     }
  157.  
  158.     @Override
  159.     public void afterTextChanged(Editable s) {
  160.         adapter.getFilter().filter(s);
  161.     }
  162.  
  163.     class SCA extends SimpleCursorAdapter implements FilterQueryProvider {
  164.         private final List<ApplicationInfo> apps;
  165.         private final java.lang.String[] names = {
  166.                 BaseColumns._ID,
  167.                 "name"
  168.         };
  169.  
  170.         public SCA(Context context) {
  171.             super(context, android.R.layout.simple_list_item_1,
  172.                     null,
  173.                     new String[] {"name"},
  174.                     new int[] {android.R.id.text1});
  175.             PackageManager mgr = getPackageManager();
  176.             apps = mgr.getInstalledApplications(0);
  177.             MatrixCursor mc = new MatrixCursor(names);
  178.             int i = 0;
  179.             for (ApplicationInfo app : apps) {
  180.                 mc.newRow().add(i++).add(app.loadLabel(mgr));
  181.             }
  182.             changeCursor(mc);
  183.             setFilterQueryProvider(this);
  184.         }
  185.  
  186.         @Override
  187.         public Cursor runQuery(CharSequence constraint) {
  188.             if (constraint == null) {
  189.                 return null;
  190.             }
  191.             String s = constraint.toString().toLowerCase();
  192.             PackageManager mgr = getPackageManager();
  193.             MatrixCursor mc = new MatrixCursor(names);
  194.             int i = 0;
  195.             for (ApplicationInfo app : apps) {
  196.                 CharSequence label = app.loadLabel(mgr);
  197.                 if (label.toString().toLowerCase().contains(s)) {
  198.                     mc.newRow().add(i++).add(label);
  199.                 }
  200.             }
  201.             return mc;
  202.         }
  203.     }
  204.  
  205.     /**
  206.      * Return whether the given PackageInfo represents a system package or not.
  207.      * User-installed packages (Market or otherwise) should not be denoted as
  208.      * system packages.
  209.      *
  210.      * @param pkgInfo
  211.      * @return boolean
  212.      */
  213.     private boolean isSystemPackage(PackageInfo pkgInfo) {
  214.         return ((pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) ? true
  215.                 : false;
  216.     }
  217.  
  218.     private boolean isSystemPackage1(PackageInfo pkgInfo) {
  219.         return ((pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) ? false
  220.                 : true;
  221.     }
  222.  
  223.     private boolean isSystemPackage2(PackageInfo pkgInfo) {
  224.         return ((pkgInfo.packageName.contains("com.spicycurryman.getdisciplined10.app"))) ? false
  225.                 : true;
  226.     }
  227.  
  228.  
  229.  
  230.  
  231. // Don't need in Fragment
  232. /*@Override
  233. public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
  234.     inflater.inflate(R.menu.block, menu);
  235.    // super.onCreateOptionsMenu(menu,inflater);
  236. }*/
  237.  
  238.     @Override
  239.     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
  240.         //ApkAdapter apkAdapter=(ApkAdapter)apkList.getAdapter();
  241.  
  242.     }
  243.  
  244.  
  245.     private class LoadApplications extends AsyncTask<Void, Void, Void> {
  246.  
  247.  
  248.         private ProgressDialog pDialog;
  249.         List<PackageInfo> packageList1 = new ArrayList<PackageInfo>();
  250.  
  251.         public LoadApplications(Context context){
  252.             Context mContext = context;
  253.         }
  254.  
  255.  
  256.  
  257.  
  258.         @Override
  259.         protected Void doInBackground(Void... params) {
  260.  
  261.             List<PackageInfo> packageList = packageManager
  262.                     .getInstalledPackages(PackageManager.GET_PERMISSIONS);
  263.  
  264.  
  265.  
  266.  
  267.             for(PackageInfo pi : packageList) {
  268.                 boolean b = isSystemPackage(pi);
  269.                 boolean c = isSystemPackage1(pi);
  270.                 boolean d = isSystemPackage2(pi);
  271.  
  272.  
  273.  
  274.                 if ((!b || !c ) && d ){
  275.                         packageList1.add(pi);
  276.                     }
  277.                 }
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.             //sort by application name
  286.  
  287.             final PackageItemInfo.DisplayNameComparator comparator = new PackageItemInfo.DisplayNameComparator(packageManager);
  288.  
  289.             Collections.sort(packageList1, new Comparator<PackageInfo>() {
  290.                 @Override
  291.                 public int compare(PackageInfo lhs, PackageInfo rhs) {
  292.                     return comparator.compare(lhs.applicationInfo, rhs.applicationInfo);
  293.                 }
  294.             });
  295.  
  296.  
  297.  
  298.             return null;
  299.         }
  300.  
  301.         @Override
  302.         protected void onCancelled() {
  303.             super.onCancelled();
  304.         }
  305.  
  306.         @Override
  307.         protected void onPreExecute() {
  308.             pDialog = new ProgressDialog(InstalledAppActivity.this);
  309.             pDialog.setMessage("Loading your apps...");
  310.             pDialog.show();
  311.  
  312.         }
  313.  
  314.  
  315.  
  316.         //Inefficient patch to prevent Window Manager error
  317.  
  318.  
  319.         @Override
  320.         protected void onPostExecute(Void result) {
  321.  
  322.             apkList.setAdapter(new ApkAdapter(InstalledAppActivity.this, packageList1, packageManager));
  323.  
  324.             try {
  325.                 if ((this.pDialog != null) && this.pDialog.isShowing()) {
  326.                     this.pDialog.dismiss();
  327.                 }
  328.             } catch (final IllegalArgumentException e) {
  329.                 // Handle or log or ignore
  330.             } catch (final Exception e) {
  331.                 // Handle or log or ignore
  332.             } finally {
  333.                 this.pDialog = null;
  334.             }
  335.  
  336.  
  337.             super.onPostExecute(result);
  338.         }
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.         @Override
  346.         protected void onProgressUpdate(Void... values) {
  347.             super.onProgressUpdate(values);
  348.         }
  349.     }
  350.  
  351.  
  352.  
  353. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement