DummyActivity: Do not request for notification permission multiple times in one process
This commit is contained in:
parent
df70a6b57c
commit
684e5a0350
|
@ -18,6 +18,7 @@ import android.os.RemoteException;
|
||||||
import android.os.StrictMode;
|
import android.os.StrictMode;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.view.WindowManager;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
@ -91,6 +92,8 @@ public class DummyActivity extends Activity {
|
||||||
private static final int REQUEST_PERMISSION_EXTERNAL_STORAGE= 2;
|
private static final int REQUEST_PERMISSION_EXTERNAL_STORAGE= 2;
|
||||||
private static final int REQUEST_PERMISSION_POST_NOTIFICATIONS = 3;
|
private static final int REQUEST_PERMISSION_POST_NOTIFICATIONS = 3;
|
||||||
|
|
||||||
|
private static boolean sHasRequestedPermission = false;
|
||||||
|
|
||||||
// A state variable to record the last time DummyActivity was informed that someone
|
// A state variable to record the last time DummyActivity was informed that someone
|
||||||
// in the same process needs to call an action without signature
|
// in the same process needs to call an action without signature
|
||||||
// Since they must be in the same process as DummyActivity, it will be totally fine
|
// Since they must be in the same process as DummyActivity, it will be totally fine
|
||||||
|
@ -133,8 +136,13 @@ public class DummyActivity extends Activity {
|
||||||
Utility.enforceUserRestrictions(this);
|
Utility.enforceUserRestrictions(this);
|
||||||
SettingsManager.getInstance().applyAll();
|
SettingsManager.getInstance().applyAll();
|
||||||
|
|
||||||
|
synchronized (DummyActivity.class) {
|
||||||
// Do not show permission dialog during finalization -- it will conflict with the provisioning UI
|
// Do not show permission dialog during finalization -- it will conflict with the provisioning UI
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && !FINALIZE_PROVISION.equals(getIntent().getAction())) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && !sHasRequestedPermission
|
||||||
|
&& !FINALIZE_PROVISION.equals(getIntent().getAction())) {
|
||||||
|
// Avoid requesting permission multiple times in one session
|
||||||
|
// This also prevents multiple instances of DummyActivity from being blocked on each other
|
||||||
|
sHasRequestedPermission = true;
|
||||||
// We pretty much only send notifications to keep the process inside work profile alive
|
// We pretty much only send notifications to keep the process inside work profile alive
|
||||||
// as such, only request the notification permission from inside the profile
|
// as such, only request the notification permission from inside the profile
|
||||||
// This will ideally be shown and done when the user sees the app list UI for the first time
|
// This will ideally be shown and done when the user sees the app list UI for the first time
|
||||||
|
@ -146,6 +154,7 @@ public class DummyActivity extends Activity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue