From 0ad758fbca5e7754ae3ce0a29c00f6ca40ce90b1 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Thu, 10 Sep 2015 13:48:54 +0200 Subject: [PATCH] WIP blacklist activity (currently does nothing except listing apps) --- app/src/main/AndroidManifest.xml | 7 ++ .../activities/AppBlacklistActivity.java | 106 ++++++++++++++++++ .../activities/AppManagerActivity.java | 2 - .../activities/SettingsActivity.java | 9 ++ .../main/res/layout/activity_appblacklist.xml | 16 +++ app/src/main/res/values/strings.xml | 5 + app/src/main/res/xml/preferences.xml | 3 + 7 files changed, 146 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AppBlacklistActivity.java create mode 100644 app/src/main/res/layout/activity_appblacklist.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e49194d18..9dfd1d545 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -66,6 +66,13 @@ android:name="android.support.PARENT_ACTIVITY" android:value=".activities.ControlCenter" /> + + + diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AppBlacklistActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AppBlacklistActivity.java new file mode 100644 index 000000000..f4a505ed3 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AppBlacklistActivity.java @@ -0,0 +1,106 @@ +package nodomain.freeyourgadget.gadgetbridge.activities; + +import android.app.Activity; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; +import android.os.Bundle; +import android.support.v4.app.NavUtils; +import android.support.v4.content.LocalBroadcastManager; +import android.view.LayoutInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.TextView; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +import nodomain.freeyourgadget.gadgetbridge.R; + + +public class AppBlacklistActivity extends Activity { + private static final Logger LOG = LoggerFactory.getLogger(AppBlacklistActivity.class); + + private BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (action.equals(ControlCenter.ACTION_QUIT)) { + finish(); + } + } + }; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_appblacklist); + getActionBar().setDisplayHomeAsUpEnabled(true); + + final PackageManager pm = getPackageManager(); + + final List packageList = pm.getInstalledApplications(PackageManager.GET_META_DATA); + ListView appListView = (ListView) findViewById(R.id.appListView); + + final ArrayAdapter adapter = new ArrayAdapter(this, R.layout.item_with_details, packageList) { + + @Override + public View getView(int position, View view, ViewGroup parent) { + if (view == null) { + LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); + view = inflater.inflate(R.layout.item_with_details, parent, false); + } + + ApplicationInfo appInfo = packageList.get(position); + //TextView deviceAppVersionAuthorLabel = (TextView) view.findViewById(R.id.item_details); + TextView deviceAppNameLabel = (TextView) view.findViewById(R.id.item_name); + ImageView deviceImageView = (ImageView) view.findViewById(R.id.item_image); + + //deviceAppVersionAuthorLabel.setText(appInfo.loadDescription(pm)); + deviceAppNameLabel.setText(appInfo.loadLabel(pm)); + deviceImageView.setImageDrawable(appInfo.loadIcon(pm)); + + return view; + } + }; + appListView.setAdapter(adapter); + /* + appListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View v, int position, long id) { + // do something + } + }); + */ + + IntentFilter filter = new IntentFilter(); + filter.addAction(ControlCenter.ACTION_QUIT); + + LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, filter); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + NavUtils.navigateUpFromSameTask(this); + return true; + } + return super.onOptionsItemSelected(item); + } + + @Override + protected void onDestroy() { + LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver); + super.onDestroy(); + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AppManagerActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AppManagerActivity.java index 94c8837f4..6e3b28020 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AppManagerActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AppManagerActivity.java @@ -27,8 +27,6 @@ import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.adapter.GBDeviceAppAdapter; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceService; -import nodomain.freeyourgadget.gadgetbridge.service.DeviceCommunicationService; import nodomain.freeyourgadget.gadgetbridge.util.FileUtils; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java index 735b68af7..6f3761e2b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java @@ -36,6 +36,15 @@ public class SettingsActivity extends AbstractSettingsActivity { } }); + pref = findPreference("pref_key_blacklist"); + pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + public boolean onPreferenceClick(Preference preference) { + Intent enableIntent = new Intent(SettingsActivity.this, AppBlacklistActivity.class); + startActivity(enableIntent); + return true; + } + }); + final Preference pebbleEmuAddr = findPreference("pebble_emu_addr"); pebbleEmuAddr.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override diff --git a/app/src/main/res/layout/activity_appblacklist.xml b/app/src/main/res/layout/activity_appblacklist.xml new file mode 100644 index 000000000..831675a38 --- /dev/null +++ b/app/src/main/res/layout/activity_appblacklist.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 781c6a4f6..b175c5842 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,6 +18,9 @@ App Manager Delete + + Notification Blacklist + FW/App installer You are about to install firmware %s instead of the one currently on your Mi Band. @@ -49,6 +52,8 @@ when screen is off never + Blacklist Apps + Developer Options Mi Band address diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 6dfe88c31..41a36bed2 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -51,6 +51,9 @@ android:defaultValue="false" android:key="notifications_generic_whenscreenon" android:title="@string/pref_title_whenscreenon" /> +