Java 请求许可
我有一个本地Java模块负责请求一些权限,并且我已经创建了一个桥来访问JavaScript中的这个方法。下面是react本机代码的相关部分Java 请求许可,java,android,react-native,promise,react-native-android,Java,Android,React Native,Promise,React Native Android,我有一个本地Java模块负责请求一些权限,并且我已经创建了一个桥来访问JavaScript中的这个方法。下面是react本机代码的相关部分 import { NativeModules, Platform } from 'react-native'; const CTModule = NativeModules.CTHandler as { requestPermissions: () => Promise<boolean>; arePermissionsGran
import { NativeModules, Platform } from 'react-native';
const CTModule = NativeModules.CTHandler as {
requestPermissions: () => Promise<boolean>;
arePermissionsGranted: () => Promise<boolean>;
enableAndDiscoverableBluetooth: () => Promise<boolean>;
startBluetoothService: () => Promise<boolean>;
};
export const enableCT = async () => {
const areGranted = await CTModule.arePermissionsGranted();
if (!areGranted) {
await CTModule.requestPermissions();
}
await CTModule.enableAndDiscoverableBluetooth();
await CTModule.startBluetoothService();
};
此代码调用帮助器模块的一些函数-MainUtils
,代码如下:
public class MainUtils {
public static boolean isBluetoothAvailable() {
if(isBluetoothPermissionAvailable(MainApplication.getInstance().getApplicationContext())) {
BluetoothAdapter bltAdapter = BluetoothAdapter.getDefaultAdapter();
return bltAdapter != null &&
bltAdapter.isEnabled() &&
bltAdapter.getState() == BluetoothAdapter.STATE_ON;
}
return false;
}
public static boolean isBluetoothPermissionAvailable(Context context) {
int blt = ContextCompat.checkSelfPermission(context, Manifest.permission.BLUETOOTH);
int bltadmin = ContextCompat.checkSelfPermission(context, Manifest.permission.BLUETOOTH_ADMIN);
return (blt == PackageManager.PERMISSION_GRANTED && bltadmin == PackageManager.PERMISSION_GRANTED);
}
public static boolean isBTScanningServiceRunning() {
return BTScanningService.serviceRunning;
}
public static void requestPermissions(
Activity context, int permissionRequestCode
) {
String[] PERMISSIONS = {
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_ADMIN,
Manifest.permission.ACCESS_COARSE_LOCATION,
};
ActivityCompat.requestPermissions(
context,
PERMISSIONS,
permissionRequestCode
);
}
public static boolean arePermissionsGranted(Context context) {
int blt = ContextCompat.checkSelfPermission(context, Manifest.permission.BLUETOOTH);
int bltadmin = ContextCompat.checkSelfPermission(context, Manifest.permission.BLUETOOTH_ADMIN);
int coarseLoc = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION);
return (
blt == PackageManager.PERMISSION_GRANTED
&& bltadmin == PackageManager.PERMISSION_GRANTED
&& coarseLoc == PackageManager.PERMISSION_GRANTED
);
}
}
您是否尝试添加catch块来检查承诺是否被拒绝(或者检查承诺是否根本没有得到解决)?
public class MainUtils {
public static boolean isBluetoothAvailable() {
if(isBluetoothPermissionAvailable(MainApplication.getInstance().getApplicationContext())) {
BluetoothAdapter bltAdapter = BluetoothAdapter.getDefaultAdapter();
return bltAdapter != null &&
bltAdapter.isEnabled() &&
bltAdapter.getState() == BluetoothAdapter.STATE_ON;
}
return false;
}
public static boolean isBluetoothPermissionAvailable(Context context) {
int blt = ContextCompat.checkSelfPermission(context, Manifest.permission.BLUETOOTH);
int bltadmin = ContextCompat.checkSelfPermission(context, Manifest.permission.BLUETOOTH_ADMIN);
return (blt == PackageManager.PERMISSION_GRANTED && bltadmin == PackageManager.PERMISSION_GRANTED);
}
public static boolean isBTScanningServiceRunning() {
return BTScanningService.serviceRunning;
}
public static void requestPermissions(
Activity context, int permissionRequestCode
) {
String[] PERMISSIONS = {
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_ADMIN,
Manifest.permission.ACCESS_COARSE_LOCATION,
};
ActivityCompat.requestPermissions(
context,
PERMISSIONS,
permissionRequestCode
);
}
public static boolean arePermissionsGranted(Context context) {
int blt = ContextCompat.checkSelfPermission(context, Manifest.permission.BLUETOOTH);
int bltadmin = ContextCompat.checkSelfPermission(context, Manifest.permission.BLUETOOTH_ADMIN);
int coarseLoc = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION);
return (
blt == PackageManager.PERMISSION_GRANTED
&& bltadmin == PackageManager.PERMISSION_GRANTED
&& coarseLoc == PackageManager.PERMISSION_GRANTED
);
}
}