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