kopia lustrzana https://github.com/ryukoposting/Signal-Android
Prevent internal shake to report dialog from showing after locking.
rodzic
bd18b731c8
commit
aff0c43b39
|
@ -7,6 +7,8 @@ import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.lifecycle.Lifecycle;
|
||||||
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
|
|
||||||
|
@ -36,7 +38,7 @@ public final class ShakeToReport implements ShakeDetector.Listener {
|
||||||
private final Application application;
|
private final Application application;
|
||||||
private final ShakeDetector detector;
|
private final ShakeDetector detector;
|
||||||
|
|
||||||
private WeakReference<Activity> weakActivity;
|
private WeakReference<AppCompatActivity> weakActivity;
|
||||||
|
|
||||||
public ShakeToReport(@NonNull Application application) {
|
public ShakeToReport(@NonNull Application application) {
|
||||||
this.application = application;
|
this.application = application;
|
||||||
|
@ -56,7 +58,7 @@ public final class ShakeToReport implements ShakeDetector.Listener {
|
||||||
detector.stop();
|
detector.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerActivity(@NonNull Activity activity) {
|
public void registerActivity(@NonNull AppCompatActivity activity) {
|
||||||
if (!SignalStore.internalValues().shakeToReport()) return;
|
if (!SignalStore.internalValues().shakeToReport()) return;
|
||||||
|
|
||||||
this.weakActivity = new WeakReference<>(activity);
|
this.weakActivity = new WeakReference<>(activity);
|
||||||
|
@ -66,26 +68,28 @@ public final class ShakeToReport implements ShakeDetector.Listener {
|
||||||
public void onShakeDetected() {
|
public void onShakeDetected() {
|
||||||
if (!SignalStore.internalValues().shakeToReport()) return;
|
if (!SignalStore.internalValues().shakeToReport()) return;
|
||||||
|
|
||||||
Activity activity = weakActivity.get();
|
AppCompatActivity activity = weakActivity.get();
|
||||||
if (activity == null) {
|
if (activity == null) {
|
||||||
Log.w(TAG, "No registered activity!");
|
Log.w(TAG, "No registered activity!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
disable();
|
if (activity.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) {
|
||||||
|
disable();
|
||||||
|
|
||||||
new MaterialAlertDialogBuilder(activity)
|
new MaterialAlertDialogBuilder(activity)
|
||||||
.setTitle(R.string.ShakeToReport_shake_detected)
|
.setTitle(R.string.ShakeToReport_shake_detected)
|
||||||
.setMessage(R.string.ShakeToReport_submit_debug_log)
|
.setMessage(R.string.ShakeToReport_submit_debug_log)
|
||||||
.setNegativeButton(android.R.string.cancel, (d, i) -> {
|
.setNegativeButton(android.R.string.cancel, (d, i) -> {
|
||||||
d.dismiss();
|
d.dismiss();
|
||||||
enableIfVisible();
|
enableIfVisible();
|
||||||
})
|
})
|
||||||
.setPositiveButton(R.string.ShakeToReport_submit, (d, i) -> {
|
.setPositiveButton(R.string.ShakeToReport_submit, (d, i) -> {
|
||||||
d.dismiss();
|
d.dismiss();
|
||||||
submitLog(activity);
|
submitLog(activity);
|
||||||
})
|
})
|
||||||
.show();
|
.show();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void submitLog(@NonNull Activity activity) {
|
private void submitLog(@NonNull Activity activity) {
|
||||||
|
|
Ładowanie…
Reference in New Issue