mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-15 12:19:54 +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;
|
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();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user