お世話になっております。
Monacaにて、QRコードリーダーを起動して内容を取得後、内部ストレージへ保存する処理を行いたいです。
そこで、下記コードを書いたのですが、ボタンを押してQRコードが起動した瞬間にアプリケーションが落ちてしまいます。
Cordovaプラグイン
CLI Version 10.0.0
追加したプラグイン
cordova-plugin-qr-barcode-scanner v8.0.3
cordova.plugins.diagnostic v5.0.2
cordova-plugin-file v6.0.0
参考URLにしたURL
https://press.monaca.io/atsushi/5851
http://hatopp.wpblog.jp/archives/3323
Index.html
html
1<!DOCTYPE HTML> 2<html> 3<head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover"> 6 <meta http-equiv="Content-Security-Policy" content="default-src * data: gap: https://ssl.gstatic.com; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'"> 7 <script src="components/loader.js"></script> 8 <script src="lib/onsenui/js/onsenui.min.js"></script> 9 <script src="js/app.js"></script> 10 11 <link rel="stylesheet" href="components/loader.css"> 12 <link rel="stylesheet" href="lib/onsenui/css/onsenui.css"> 13 <link rel="stylesheet" href="lib/onsenui/css/onsen-css-components.css"> 14 <link rel="stylesheet" href="css/style.css"> 15 16 <script> 17 ons.ready(function() { 18 console.log("Onsen UI is ready!"); 19 }); 20 21 if (ons.platform.isIPhoneX()) { 22 document.documentElement.setAttribute('onsflag-iphonex-portrait', ''); 23 document.documentElement.setAttribute('onsflag-iphonex-landscape', ''); 24 } 25 </script> 26</head> 27<body> 28 <ons-button onclick="writeText()">WRITE</ons-button> 29</body> 30</html> 31
app.js
javascript
1async function writeText() { 2 3 const res = await scan(); 4 // 出力 5 console.log(res.text); 6 7} 8 9function scan(options) { 10 return new Promise((res, rej) => { 11 cordova.plugins.barcodeScanner.scan(res, rej, options); 12 }); 13}
config.xml
xml
1<?xml version="1.0" encoding="UTF-8"?> 2<widget xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" id="com.example.helloworld" version="1.0.0"> 3 <name>Minimum Template</name> 4 <description>Made with Monaca (http://monaca.mobi)</description> 5 <author/> 6 <content src="index.html"/> 7 <access origin="*"/> 8 <allow-navigation href="*"/> 9 <allow-intent href="itms:*"/> 10 <allow-intent href="itms-apps:*"/> 11 <!-- 以下を追加(ここから) --> 12 <edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="merge"> 13 <string>QR/バーコードを読み取るためカメラを利用します</string> 14 </edit-config> 15 <platform name="android"> 16 <edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge"> 17 <application android:requestLegacyExternalStorage="true"/> 18 </edit-config> 19 </platform> 20 <preference name="android-build-tool" value="gradle"/> 21 <!-- 以下を追加(ここまで) --> 22~~以下略~~ 23
なお、「cordova.plugins.diagnostic」及び「cordova-plugin-file」を外して、config.xmlを下記のように修正すると、QRコードリーダーが正常に起動して、内容も取得することが出来ます。
QRコードリーダーのみ使用時のconfig.xml
xml
1<?xml version="1.0" encoding="UTF-8"?> 2<widget xmlns="http://www.w3.org/ns/widgets" id="com.example.helloworld" version="1.0.0"> 3 <name>Minimum Template</name> 4 <description>Made with Monaca (http://monaca.mobi)</description> 5 <author/> 6 <content src="index.html"/> 7 <access origin="*"/> 8 <allow-navigation href="*"/> 9 <allow-intent href="itms:*"/> 10 <allow-intent href="itms-apps:*"/> 11 <!-- 以下を追加(ここから) --> 12 <edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="merge"> 13 <string>QR/バーコードを読み取るためカメラを利用します</string> 14 </edit-config> 15 <!-- 以下を追加(ここまで) --> 16~~以下略~~ 17
おそらくAndroid側の権限で、カメラとストレージの権限を付加するところで何かしら競合してしまっていることが原因では無いかと考えますが、どのように修正すれば良いか分かりませんでした。
何がおかしいのか、ご指摘いただけると助かります。
以上、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/14 01:56