Update panic app list after installing app.

This commit is contained in:
akwizgran
2018-09-28 10:45:47 +01:00
parent fd07dc006d
commit f9e292f734

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 {
@@ -41,8 +45,12 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
@Override @Override
public void onCreatePreferences(Bundle bundle, String s) { public void onCreatePreferences(Bundle bundle, String s) {
LOG.info("onCreatePreferences");
addPreferencesFromResource(R.xml.panic_preferences); addPreferencesFromResource(R.xml.panic_preferences);
}
private void updatePreferences() {
LOG.info("updatePreferences");
pm = getActivity().getPackageManager(); pm = getActivity().getPackageManager();
lockPref = (SwitchPreference) findPreference(KEY_LOCK); lockPref = (SwitchPreference) findPreference(KEY_LOCK);
@@ -74,7 +82,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)
@@ -87,17 +95,17 @@ public class PanicPreferencesFragment extends PreferenceFragmentCompat
entries.toArray(new CharSequence[entries.size()])); entries.toArray(new CharSequence[entries.size()]));
panicAppPref.setEntryValues( panicAppPref.setEntryValues(
entryValues.toArray(new CharSequence[entryValues.size()])); entryValues.toArray(new CharSequence[entryValues.size()]));
panicAppPref.setDefaultValue(Panic.PACKAGE_NAME_NONE); panicAppPref.setDefaultValue(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,24 +115,28 @@ 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);
} }
} }
@Override @Override
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
LOG.info("onStart");
getPreferenceScreen().getSharedPreferences() getPreferenceScreen().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this); .registerOnSharedPreferenceChangeListener(this);
updatePreferences();
showPanicApp(PanicResponder.getTriggerPackageName(getActivity())); showPanicApp(PanicResponder.getTriggerPackageName(getActivity()));
} }
@@ -152,9 +164,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 +188,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 +198,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();
}; };