Java 如何实现react native的许可?

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

关于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 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创建的项目,这些项目后来被弹出。”