requestInstallPermissions method
Request necessary permissions for installing APKs on Android.
Returns true if permissions are granted, false otherwise.
The onPermissionDialogRequired callback is called when the user
needs to be informed about the permission request.
Implementation
Future<bool> requestInstallPermissions({
Future<bool> Function()? onPermissionDialogRequired,
}) async {
if (!Platform.isAndroid) return true;
if (config.skipPermissionCheck) return true;
final installPermission = await Permission.requestInstallPackages.status;
config.log('Install packages permission status: $installPermission');
if (!installPermission.isGranted) {
config.log('Requesting install packages permission...');
if (onPermissionDialogRequired != null) {
final shouldRequest = await onPermissionDialogRequired();
if (!shouldRequest) {
config.log('User declined permission dialog');
return false;
}
}
final result = await Permission.requestInstallPackages.request();
config.log('Install permission request result: $result');
if (!result.isGranted) {
return false;
}
}
// Storage permission for saving APK
final storageStatus = await Permission.storage.status;
if (!storageStatus.isGranted) {
final result = await Permission.storage.request();
if (!result.isGranted) {
if (await Permission.manageExternalStorage.isDenied) {
await Permission.manageExternalStorage.request();
}
}
}
return true;
}