首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在获取“来自本机模块的非法回调调用。此回调类型仅允许来自本机代码的单个调用”

正在获取“来自本机模块的非法回调调用。此回调类型仅允许来自本机代码的单个调用”
EN

Stack Overflow用户
提问于 2019-08-20 20:30:34
回答 2查看 2.4K关注 0票数 2

我在两个类中使用了react-native-image选择器和react-native-image-crop选择器库。

一个是启动库映像(react-native-image picker),另一个是打开裁剪窗口(react-native- image -crop-picker)。

在这里,启动库在一个屏幕上,而裁剪正在打开,同时从另一个屏幕上的库导航。

我的问题是,在点击选择裁剪窗口后,它再次重置裁剪窗口,需要再次裁剪,并在此之后发生非法调用错误。

请参阅代码片段

代码语言:javascript
复制
 // Opens the library image in Library.js screen
import ImagePicker from 'react-native-image-picker';
     ImagePicker.launchImageLibrary(options, (response)  => {
            if (response.didCancel) {
              console.warn('User cancelled photo picker');
            }
            else if (response.error) {
              console.warn('ImagePicker Error: ', response.error);
            }
            else {
             this.props.navigation.navigate('CropWindow', { screenName: 'CropImage',uri: response.uri});
            }

下面是CropWindow.js中的裁剪窗口

代码语言:javascript
复制
import ImagePicker from 'react-native-image-crop-picker';
    ImagePicker.openCropper({
                path: response,
                width: deviceWidth,
                height: deviceWidth*5/4
             }).then(image => {
                this.props.navigation.navigate('ShowAllCroppedImage', {uri: response.uri, croppedImage: this.croppedImage.bind(this)});
              })
              .catch((err) => {
                console.log("openCropper error = " + err)
              });

EN

回答 2

Stack Overflow用户

发布于 2019-08-20 21:01:56

您不需要同时使用两个模块。你可以通过简单的执行得到你想要的东西。

在此之前,请获得camerastorage space的权限。

您可以使用yarn add react-native-permissions @react-native-community/async-storage

react-native link react-native-permissions

示例

代码语言:javascript
复制
import Permissions from 'react-native-permissions';
...
_requestPermission = () => {
    Permissions.request('photo').then(response => {
      // Returns once the user has chosen to 'allow' or to 'not allow' access
      // Response is one of: 'authorized', 'denied', 'restricted', or 'undetermined'
      this.setState({photoPermission: response});
    });
    Permissions.request('camera').then(response => {
      // Returns once the user has chosen to 'allow' or to 'not allow' access
      // Response is one of: 'authorized', 'denied', 'restricted', or 'undetermined'
      this.setState({photoPermission: response});
    });
  };

如果您想要剪切一个图像,则使用

代码语言:javascript
复制
import ImagePicker from 'react-native-image-crop-picker';
...
ImagePicker.openPicker({
  width: deviceWidth,
  height: deviceWidth*5/4
  cropping: true
}).then(image => {
  console.log(image);
});

如果要剪切多张图像,请使用:

代码语言:javascript
复制
import ImagePicker from 'react-native-image-crop-picker';
...
ImagePicker.openPicker({
  multiple: true,
  width: deviceWidth,
  height: deviceWidth*5/4
  cropping: true
}).then(images => {
  console.log(images);
});
票数 0
EN

Stack Overflow用户

发布于 2019-08-20 21:09:01

android的权限问题

代码语言:javascript
复制
import { PermissionsAndroid } from 'react-native';

async requestCameraPermission() {
  try {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.CAMERA,
      {
        'title': 'Cool Photo App Camera Permission',
        'message': 'Cool Photo App needs access to your camera ' +
                   'so you can take awesome pictures.'
      }
    )
    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      console.log("You can use the camera")
    } else {
      console.log("Camera permission denied")
    }
  } catch (err) {
    console.warn(err)
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57573723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档