Merge branch 'panic-app-list' into 'master'

Update list of panic button apps after installing app

Closes #1392

See merge request briar/briar!940
This commit is contained in:
Torsten Grote
2018-10-05 14:18:44 +00:00

View File

@@ -1,6 +1,5 @@
package org.briarproject.briar.android.panic; package org.briarproject.briar.android.panic;
import android.app.Activity;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
@@ -22,9 +21,14 @@ import java.util.logging.Logger;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import info.guardianproject.panic.Panic;
import info.guardianproject.panic.PanicResponder; import info.guardianproject.panic.PanicResponder;
import static android.app.Activity.RESULT_CANCELED;
import static android.app.Activity.RESULT_OK;
import static android.content.Intent.ACTION_VIEW;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static info.guardianproject.panic.Panic.PACKAGE_NAME_NONE;
public class PanicPreferencesFragment extends PreferenceFragmentCompat public class PanicPreferencesFragment extends PreferenceFragmentCompat
implements SharedPreferences.OnSharedPreferenceChangeListener { implements SharedPreferences.OnSharedPreferenceChangeListener {
@@ -42,7 +46,9 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
@Override @Override
public void onCreatePreferences(Bundle bundle, String s) { public void onCreatePreferences(Bundle bundle, String s) {
addPreferencesFromResource(R.xml.panic_preferences); addPreferencesFromResource(R.xml.panic_preferences);
}
private void updatePreferences() {
pm = getActivity().getPackageManager(); pm = getActivity().getPackageManager();
lockPref = (SwitchPreference) findPreference(KEY_LOCK); lockPref = (SwitchPreference) findPreference(KEY_LOCK);
@@ -74,7 +80,7 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
ArrayList<CharSequence> entries = new ArrayList<>(); ArrayList<CharSequence> entries = new ArrayList<>();
ArrayList<CharSequence> entryValues = new ArrayList<>(); ArrayList<CharSequence> entryValues = new ArrayList<>();
entries.add(0, getString(R.string.panic_app_setting_none)); entries.add(0, getString(R.string.panic_app_setting_none));
entryValues.add(0, Panic.PACKAGE_NAME_NONE); entryValues.add(0, PACKAGE_NAME_NONE);
for (ResolveInfo resolveInfo : PanicResponder.resolveTriggerApps(pm)) { for (ResolveInfo resolveInfo : PanicResponder.resolveTriggerApps(pm)) {
if (resolveInfo.activityInfo == null) if (resolveInfo.activityInfo == null)
@@ -83,21 +89,19 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
entryValues.add(resolveInfo.activityInfo.packageName); entryValues.add(resolveInfo.activityInfo.packageName);
} }
panicAppPref.setEntries( panicAppPref.setEntries(entries.toArray(new CharSequence[0]));
entries.toArray(new CharSequence[entries.size()])); panicAppPref.setEntryValues(entryValues.toArray(new CharSequence[0]));
panicAppPref.setEntryValues( panicAppPref.setDefaultValue(PACKAGE_NAME_NONE);
entryValues.toArray(new CharSequence[entryValues.size()]));
panicAppPref.setDefaultValue(Panic.PACKAGE_NAME_NONE);
panicAppPref.setOnPreferenceChangeListener((preference, newValue) -> { panicAppPref.setOnPreferenceChangeListener((preference, newValue) -> {
String packageName = (String) newValue; String packageName = (String) newValue;
PanicResponder.setTriggerPackageName(getActivity(), packageName); PanicResponder.setTriggerPackageName(getActivity(), packageName);
showPanicApp(packageName); showPanicApp(packageName);
if (packageName.equals(Panic.PACKAGE_NAME_NONE)) { if (packageName.equals(PACKAGE_NAME_NONE)) {
purgePref.setChecked(false); purgePref.setChecked(false);
purgePref.setEnabled(false); purgePref.setEnabled(false);
getActivity().setResult(Activity.RESULT_CANCELED); getActivity().setResult(RESULT_CANCELED);
} else { } else {
purgePref.setEnabled(true); purgePref.setEnabled(true);
} }
@@ -107,16 +111,18 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
if (entries.size() <= 1) { if (entries.size() <= 1) {
panicAppPref.setOnPreferenceClickListener(preference -> { panicAppPref.setOnPreferenceClickListener(preference -> {
Intent intent = new Intent(Intent.ACTION_VIEW); Intent intent = new Intent(ACTION_VIEW);
intent.setData(Uri.parse( intent.setData(Uri.parse(
"market://details?id=info.guardianproject.ripple")); "market://details?id=info.guardianproject.ripple"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(FLAG_ACTIVITY_NEW_TASK);
if (intent.resolveActivity(getActivity().getPackageManager()) if (intent.resolveActivity(getActivity().getPackageManager())
!= null) { != null) {
startActivity(intent); startActivity(intent);
} }
return true; return true;
}); });
} else {
panicAppPref.setOnPreferenceClickListener(null);
} }
} }
@@ -125,6 +131,7 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
super.onStart(); super.onStart();
getPreferenceScreen().getSharedPreferences() getPreferenceScreen().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this); .registerOnSharedPreferenceChangeListener(this);
updatePreferences();
showPanicApp(PanicResponder.getTriggerPackageName(getActivity())); showPanicApp(PanicResponder.getTriggerPackageName(getActivity()));
} }
@@ -152,9 +159,9 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
private void showPanicApp(String triggerPackageName) { private void showPanicApp(String triggerPackageName) {
if (TextUtils.isEmpty(triggerPackageName) if (TextUtils.isEmpty(triggerPackageName)
|| triggerPackageName.equals(Panic.PACKAGE_NAME_NONE)) { || triggerPackageName.equals(PACKAGE_NAME_NONE)) {
// no panic app set // no panic app set
panicAppPref.setValue(Panic.PACKAGE_NAME_NONE); panicAppPref.setValue(PACKAGE_NAME_NONE);
panicAppPref panicAppPref
.setSummary(getString(R.string.panic_app_setting_summary)); .setSummary(getString(R.string.panic_app_setting_summary));
panicAppPref.setIcon( panicAppPref.setIcon(
@@ -176,8 +183,8 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
// revert back to no app, just to be safe // revert back to no app, just to be safe
PanicResponder.setTriggerPackageName(getActivity(), PanicResponder.setTriggerPackageName(getActivity(),
Panic.PACKAGE_NAME_NONE); PACKAGE_NAME_NONE);
showPanicApp(Panic.PACKAGE_NAME_NONE); showPanicApp(PACKAGE_NAME_NONE);
} }
} }
} }
@@ -186,10 +193,10 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
DialogInterface.OnClickListener okListener = (dialog, which) -> { DialogInterface.OnClickListener okListener = (dialog, which) -> {
PanicResponder.setTriggerPackageName(getActivity()); PanicResponder.setTriggerPackageName(getActivity());
showPanicApp(PanicResponder.getTriggerPackageName(getActivity())); showPanicApp(PanicResponder.getTriggerPackageName(getActivity()));
getActivity().setResult(Activity.RESULT_OK); getActivity().setResult(RESULT_OK);
}; };
DialogInterface.OnClickListener cancelListener = (dialog, which) -> { DialogInterface.OnClickListener cancelListener = (dialog, which) -> {
getActivity().setResult(Activity.RESULT_CANCELED); getActivity().setResult(RESULT_CANCELED);
getActivity().finish(); getActivity().finish();
}; };