Java 如何实现react native的许可?
关于react native的文档很少,我需要为Android API 23+实现它的方法,以允许用户接受/拒绝蓝牙权限Java 如何实现react native的许可?,java,android,react-native,Java,Android,React Native,关于react native的文档很少,我需要为Android API 23+实现它的方法,以允许用户接受/拒绝蓝牙权限 import android.support.v4.app.ActivityCompat; import com.facebook.react.modules.core.PermissionAwareActivity; import com.facebook.react.modules.core.PermissionListener; public class MainAc
import android.support.v4.app.ActivityCompat;
import com.facebook.react.modules.core.PermissionAwareActivity;
import com.facebook.react.modules.core.PermissionListener;
public class MainActivity extends ExponentActivity implements PermissionAwareActivity {
private PermissionListener mPermissionListener;
@Override
public int checkPermission(String permission, int pid, int uid) {
return PackageManager.PERMISSION_GRANTED;
}
@Override
public int checkSelfPermission(String permission) {
return PackageManager.PERMISSION_GRANTED;
}
@Override
public void requestPermissions(String[] permissions, int requestCode, PermissionListener listener) {
mPermissionListener = listener;
ActivityCompat.requestPermissions(this, permissions, requestCode);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
// callback to native module
mPermissionListener.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
...
我真的不确定应该如何实现这些方法。感谢您的帮助。即使有人能给我指出一些我找不到的文档或资源。我在 然而,该文件中混合了许多其他样板代码,因此我不确定实现需要哪些特定部分
更好的选择似乎是让您的
MainActivity
继承自ReactActivity
。看起来您是从ExponentActivity
继承的。我不确定这是什么,但如果它是一个自定义活动子类,您可以控制它,那么您应该能够从ReactActivity
继承它。在现有Android应用程序中添加react native时,我遇到了这个问题。通过在ReactActivity.java中实现以下方法修复了此问题
@Override
public void requestPermissions(
String[] permissions, int requestCode, PermissionListener listener) {
mDelegate.requestPermissions(permissions, requestCode, listener);
}
protected @Nullable String getMainComponentName() {
return null;
}
@Override
public void onRequestPermissionsResult(
int requestCode, String[] permissions, int[] grantResults) {
mDelegate.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
导入以下内容
import com.facebook.react.modules.core.PermissionAwareActivity;
import com.facebook.react.modules.core.PermissionListener;
import androidx.annotation.Nullable;
从此改变
implements DefaultHardwareBackBtnHandler
对此
implements DefaultHardwareBackBtnHandler, PermissionAwareActivity
有关更多详细信息,请参见官方回购如果您没有使用非派生自my ReactActivity的活动,并且需要了解权限,请将以下内容添加到您的活动中:
import com.facebook.react.modules.core.PermissionAwareActivity;
import com.facebook.react.modules.core.PermissionListener;
....
public class MyActivity extends Activity implements PermissionAwareActivity {
private PermissionListener permissionListener;
....
@TargetApi(Build.VERSION_CODES.M)
public void requestPermissions(String[] permissions, int requestCode, PermissionListener listener) {
permissionListener = listener;
requestPermissions(permissions, requestCode);
}
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (permissionListener != null && permissionListener.onRequestPermissionsResult(requestCode, permissions, grantResults)) {
permissionListener = null;
}
}
}
我从你那里得到了密码。建议。为什么不使用
react native
中的PermissionsAndroid
?@VojtaNovak您必须在Android中实现它的方法才能工作。不确定您的意思(?),我一直在成功地使用PermissionsAndroid
。不需要实现任何东西。@Adriancarlli,你找到过这个问题的答案吗?我找到了其他一些答案,但根据“此API仅适用于使用react-native init或使用Create-react-native App创建的项目,这些项目后来被弹出。”