如何为 React Native 实现 PermissionAwareActivity?

Adr*_*lli 8 java android react-native

关于 React Native 的文档很少PermissionAwareActivity,我需要为 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);
  }
  ...
Run Code Online (Sandbox Code Playgroud)

我不太确定应该如何实现这些方法。任何帮助表示赞赏。即使有人可以向我指出一些我找不到的文档或资源。

Ham*_*eed 1

我在现有 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);
}
Run Code Online (Sandbox Code Playgroud)

导入关注者

import com.facebook.react.modules.core.PermissionAwareActivity;
import com.facebook.react.modules.core.PermissionListener;
import androidx.annotation.Nullable;
Run Code Online (Sandbox Code Playgroud)

从此改变

implements DefaultHardwareBackBtnHandler
Run Code Online (Sandbox Code Playgroud)

对此

implements DefaultHardwareBackBtnHandler, PermissionAwareActivity
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅ReactActivity.java官方仓库