add kActionAccessibilitySettings to manage Input Permission

This commit is contained in:
csf 2023-02-28 19:46:41 +09:00
parent 48100c9e91
commit 73bc963311
4 changed files with 12 additions and 9 deletions

View File

@ -926,6 +926,11 @@ class AndroidPermissionManager {
return gFFI.invokeMethod("check_permission", type); return gFFI.invokeMethod("check_permission", type);
} }
// startActivity goto Android Setting's page to request permission manually by user
static void startAction(String action) {
gFFI.invokeMethod(AndroidChannel.kStartAction, action);
}
static Future<bool> request(String type) { static Future<bool> request(String type) {
if (isDesktop) { if (isDesktop) {
return Future.value(true); return Future.value(true);

View File

@ -142,6 +142,8 @@ const kActionApplicationDetailsSettings =
"android.settings.APPLICATION_DETAILS_SETTINGS"; "android.settings.APPLICATION_DETAILS_SETTINGS";
const kActionRequestIgnoreBatteryOptimizations = const kActionRequestIgnoreBatteryOptimizations =
"android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"; "android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
const kActionAccessibilitySettings = "android.settings.ACCESSIBILITY_SETTINGS";
const kRecordAudio = "android.permission.RECORD_AUDIO"; const kRecordAudio = "android.permission.RECORD_AUDIO";
const kManageExternalStorage = "android.permission.MANAGE_EXTERNAL_STORAGE"; const kManageExternalStorage = "android.permission.MANAGE_EXTERNAL_STORAGE";
const kSystemAlertWindow = "android.permission.SYSTEM_ALERT_WINDOW"; const kSystemAlertWindow = "android.permission.SYSTEM_ALERT_WINDOW";

View File

@ -305,7 +305,7 @@ class _SettingsState extends State<SettingsPage> with WidgetsBindingObserver {
]), ]),
onToggle: (v) async { onToggle: (v) async {
if (v) { if (v) {
gFFI.invokeMethod(AndroidChannel.kStartAction, AndroidPermissionManager.startAction(
kActionRequestIgnoreBatteryOptimizations); kActionRequestIgnoreBatteryOptimizations);
} else { } else {
final res = await gFFI.dialogManager final res = await gFFI.dialogManager
@ -323,7 +323,7 @@ class _SettingsState extends State<SettingsPage> with WidgetsBindingObserver {
], ],
)); ));
if (res == true) { if (res == true) {
gFFI.invokeMethod(AndroidChannel.kStartAction, AndroidPermissionManager.startAction(
kActionApplicationDetailsSettings); kActionApplicationDetailsSettings);
} }
} }

View File

@ -234,7 +234,7 @@ class ServerModel with ChangeNotifier {
if (!_audioOk && !await AndroidPermissionManager.check(kRecordAudio)) { if (!_audioOk && !await AndroidPermissionManager.check(kRecordAudio)) {
final res = await AndroidPermissionManager.request(kRecordAudio); final res = await AndroidPermissionManager.request(kRecordAudio);
if (!res) { if (!res) {
// TODO handle fail showToast(translate('Failed'));
return; return;
} }
} }
@ -250,7 +250,7 @@ class ServerModel with ChangeNotifier {
final res = final res =
await AndroidPermissionManager.request(kManageExternalStorage); await AndroidPermissionManager.request(kManageExternalStorage);
if (!res) { if (!res) {
// TODO handle fail showToast(translate('Failed'));
return; return;
} }
} }
@ -348,10 +348,6 @@ class ServerModel with ChangeNotifier {
} }
} }
Future<void> initInput() async {
await parent.target?.invokeMethod("init_input");
}
Future<bool> setPermanentPassword(String newPW) async { Future<bool> setPermanentPassword(String newPW) async {
await bind.mainSetPermanentPassword(password: newPW); await bind.mainSetPermanentPassword(password: newPW);
await Future.delayed(Duration(milliseconds: 500)); await Future.delayed(Duration(milliseconds: 500));
@ -689,7 +685,7 @@ String getLoginDialogTag(int id) {
showInputWarnAlert(FFI ffi) { showInputWarnAlert(FFI ffi) {
ffi.dialogManager.show((setState, close) { ffi.dialogManager.show((setState, close) {
submit() { submit() {
ffi.serverModel.initInput(); AndroidPermissionManager.startAction(kActionAccessibilitySettings);
close(); close();
} }