質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

1回答

2180閲覧

QRコードで取得した値をAndroid端末の内部ストレージへファイルとして保存したい

T_Furuta

総合スコア25

Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

1クリップ

投稿2021/10/23 04:37

お世話になっております。
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側の権限で、カメラとストレージの権限を付加するところで何かしら競合してしまっていることが原因では無いかと考えますが、どのように修正すれば良いか分かりませんでした。
何がおかしいのか、ご指摘いただけると助かります。
以上、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

似たような要件でアプリを作成している際に、同じような問題になりました。私の場合、テンプレートに、monacaの「cordovaプラグイン」から、phonegap-plugin-barcodescannerを追加して動作確認した時は、問題無かったのですが、開発を進めるにあたりプラグインを組み込んでいくと、アプリは異常終了するようになりました。これまでリリースしたアプリで、phonegap-plugin-barcodescannerを使用していましたが、いつの間にか非推奨になり、代替となるプラグインのアナウンスも無いままですので、このような状況になるとmonaca利用者としては、相当引きます。
cordova-plugin-qr-barcode-scannerも、phonegap-plugin-barcodescannerと出自は同じようなものですから、試してみましたが、結局状況は変わりませんでした。
結局、無償で使えそうなcordova-gmv-barcode-scannerを組み込んで利用しています。読み取り画面に癖があるので、利用者からは問い合わせがありますが、慣れてください的な対応になり、残念です。

投稿2022/01/17 22:44

wankokaitai

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T_Furuta

2022/02/14 01:56

回答ありがとうございます。 お返事遅れて申し訳ありませんでした。 こちらの要件は間に合わず、出来ませんでしたが、次回案件が発生した時はご指摘通り「cordova-gmv-barcode-scanner」を試してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問