ReactNative-拍照、相冊選擇(react-native-image-picker)接入使用教程

Record_2020-04-27-16-18-29_edff3d4e83b0070286d2e7.gif
a3pp1-t84tp.gif

首先放出輪子大哥的鏈接:react-native-image-picker

好了,下面跟著我一步步配置吧。

1 依賴

yarn add react-native-image-picker

完成了之后在項目終端里執(zhí)行
如果你的rn版本大于0.60則執(zhí)行

cd ios && pod install && cd ../

否則執(zhí)行

react-native link react-native-image-picker

啥,你的RN版本低到要手動依賴?還是先更新上來吧都2020年了!

2 配置

2.1 IOS

你可以用xcode打開項目的ios文件夾里的“你的項目名稱”.xcworkspace,也可以直接在當前ide直接修改文件

2.1.1 xcode里的修改方法(選其一)

image.png

點擊+號 添加對應(yīng)的4個權(quán)限(訪問、保存圖片,調(diào)起相機,錄像)

2.1.2 直接修改文件(選其一)

打開info.plist文件


image.png

添加

    <key>NSPhotoLibraryUsageDescription</key>
    <string>$(PRODUCT_NAME) would like access to your photo gallery</string>
    <key>NSCameraUsageDescription</key>
    <string>$(PRODUCT_NAME) would like to use your camera</string>
    <key>NSPhotoLibraryAddUsageDescription</key>
    <string>$(PRODUCT_NAME) would like to save photos to your photo gallery</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>$(PRODUCT_NAME) would like to use your microphone (for videos)</string>

(key-string一對一對的)
好了,ios配置完成,然后滾去配置android

2.2 Android

2.2.1 android studio里的修改方法(選其一)

使用android studio打開項目的android文件夾,找到以下地方


image.png

添加

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

最好再加一個(不要問?。?/p>

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

2.2.2 直接修改文件(選其一)

一個道理,在項目的android/app/src/main/底下的AndroidManifest.xml文件里加入


image.png

好了,Android也配置完了。

3 使用

導(dǎo)入庫

import ImagePicker from 'react-native-image-picker';

在你點擊的時候調(diào)用

ImagePicker.showImagePicker(options, (response) => {
      console.log('Response = ', response);
      if (response.didCancel) {
        console.log('User cancelled image picker');
      } else if (response.error) {
        console.log('ImagePicker Error: ', response.error);
      } else if (response.customButton) {
        Alert.alert('自定義按鈕:' + response.customButton)
      } else {
        const source = { uri: response.uri };
        Alert.alert(JSON.stringify(source))
        console.log("source:" + JSON.stringify(source))
      }
    });

其中options的參數(shù)是(更多的配置可以去github的api里面找,里面有每一個參數(shù)的解釋)

const options = {
    title: '請選擇',
    cancelButtonTitle:'取消',
    takePhotoButtonTitle:'拍照',
    chooseFromLibraryButtonTitle:'從相冊選擇',
    storageOptions: {
      skipBackup: true,
      path: 'images',
    },
  };

以上代碼是包含相機以及相冊(ui+功能),如果你想要直接觸發(fā)某項功能,可以調(diào)用以下方法

function openCamera(){
    ImagePicker.launchCamera(options , (response) =>{
      console.log("response:" + response.path)
    })
  }

  function openImageLibrary(){
    ImagePicker.launchImageLibrary(options , (response) =>{
      console.log("response:" + response.path)
    })
  }

關(guān)于response的返回值在github的api里也有詳細說明。

好了,介紹結(jié)束,其實還有個更高star的庫react-native-camera,而且是有人臉識別功能的,但我覺得普通項目用本文這個已經(jīng)夠用了。

ps:如果跑項目報了一些莫名其妙的錯誤,可以試著刪除node_modules,然后在項目命令行里執(zhí)行

npm install

順便重新執(zhí)行

cd ios && pod install && cd ../

反正好幾次我都這樣莫名其妙的搞定了莫名其妙的報錯...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 有一段時間沒有寫東西了,因為最近項目開始嘗試使用React Native(以下簡稱RN)來開發(fā),所以這段時間一直在...
    宮城_閱讀 4,792評論 6 32
  • 做過RN開發(fā)的同學(xué)肯定對react-native-cli命令行工具不陌生,官方文檔一開始在搭建開發(fā)環(huán)境的章節(jié)就會介...
    注定暫時漂泊xxx閱讀 979評論 0 2
  • 文/大道至簡(河北) 你只看到閘上溢出的水 可否留意到下游的我眼中也噙滿了淚 其實 你并不在意我的表白 季節(jié)的挑逗...
    絲雨禪心閱讀 467評論 4 7
  • 姐姐,一種稱謂,同族親屬中同輩而且年齡比自己大的女子。 不知從什么時候起,我和姐姐的感情越來越好,殊不知,在小時候...
    天一生雪閱讀 436評論 0 1
  • 05年擁有了自己的第一胎電腦,那年10歲。小學(xué)四年級,我接觸的第一個大型游戲就是熱血江湖。 那個時候是寒假,每天晚...
    慢半拍兒的閃電閱讀 652評論 0 0

友情鏈接更多精彩內(nèi)容