Android Open Source - mirror-notify-android Whitelist Activity






From Project

Back to project page mirror-notify-android.

License

The source code is released under:

Apache License

If you think the Android project mirror-notify-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.rahulrav.glassnotify;
/*w w  w.  j a v a  2s . c o  m*/
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.ListView;

import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;

public class WhitelistActivity extends Activity {

  private ProgressDialog progressDialog;

  private ListView listView;

  private AppItemAdapter adapter;

  private LoadApplicationsTask loadApplicationsTask;

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.whitelist);
    final SharedPreferences preferences = this.getSharedPreferences(NotifierService.PREFERENCES_NAME, MODE_PRIVATE);
    adapter = new AppItemAdapter(this, null);
    listView = (ListView) findViewById(R.id.list_view);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AppItemAdapter.WhiteListListener(preferences));
  }

  @Override
  protected void onPause() {
    super.onPause();
    if (loadApplicationsTask != null && !(loadApplicationsTask.getStatus() == AsyncTask.Status.FINISHED)) {
      loadApplicationsTask.cancel(true);
      loadApplicationsTask = null;
    }
  }

  @Override
  protected void onResume() {
    super.onResume();
    progressDialog = ProgressDialog.show(this, "Glass Notifier", "Loading the list of applications on your device", true);
    loadApplicationsTask = new LoadApplicationsTask(this);
    loadApplicationsTask.execute();
  }

  /**
   * Displays the primary google account being used.
   */
  public static class LoadApplicationsTask extends AsyncTask<Void, Void, List<AppItem>> {

    private final WhitelistActivity activity;

    public LoadApplicationsTask(final WhitelistActivity activity) {
      this.activity = activity;
    }

    @Override
    protected List<AppItem> doInBackground(Void... nothing) {
      final SharedPreferences preferences = activity.getSharedPreferences(NotifierService.PREFERENCES_NAME, MODE_PRIVATE);
      final PackageManager packageManager = activity.getPackageManager();
      final List<ApplicationInfo> applicationInfos = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
      List<AppItem> appItems = new LinkedList<AppItem>();
      if (applicationInfos != null) {
        for (final ApplicationInfo applicationInfo : applicationInfos) {
          final AppItem appItem = new AppItem();
          appItem.packageName = applicationInfo.packageName;
          final Drawable drawable = applicationInfo.loadIcon(packageManager);
          appItem.drawable = drawable;
          appItem.applicationLabel = String.valueOf(packageManager.getApplicationLabel(applicationInfo));
          appItem.isWhitelisted = NotifierService.getWhiteListStatus(preferences, activity.getPackageName(), applicationInfo.packageName);
          appItems.add(appItem);
        }
      }
      // sort
      Collections.sort(appItems, new Comparator<AppItem>() {
        @Override
        public int compare(final AppItem first, final AppItem second) {
          final String labelOne = TextUtils.isEmpty(first.applicationLabel) ? first.packageName : first.applicationLabel;
          final String labelTwo = TextUtils.isEmpty(second.applicationLabel) ? second.packageName : second.applicationLabel;
          return labelOne.compareTo(labelTwo);
        }
      });
      return appItems;
    }

    @Override
    protected void onPostExecute(final List<AppItem> items) {
      activity.adapter.clear();
      activity.adapter.addItems(items);
      activity.adapter.notifyDataSetChanged();
      activity.progressDialog.dismiss();
    }
  }
}




Java Source Code List

com.rahulrav.glassnotify.AppItemAdapter.java
com.rahulrav.glassnotify.AppItemViewHolder.java
com.rahulrav.glassnotify.AppItem.java
com.rahulrav.glassnotify.MainActivity.java
com.rahulrav.glassnotify.NotificationListenerService.java
com.rahulrav.glassnotify.NotifierService.java
com.rahulrav.glassnotify.WhitelistActivity.java
com.rahulrav.glassnotify.util.IOUtils.java
com.rahulrav.glassnotify.util.Logger.java