

初めてアプリ作成に取り組んでいます。  
webビューのandroidアプリとしたく、cordovaの活用に挑戦しています。

「写真・画像を選択」し、登録できる機能を作っているのですが、  
「フォト」「ギャラリー」以外の選択元（例．「GoogleDrive」「ダウンロード」「Dropbox」）から写真・画像を選択すると、  
アプリが強制終了してしまいます。

ビルドはAndroidStudioで行いました。

どなたか詳しい方いらっしゃれば解決方法ご教授いただきたいです。  
下に作成したコードをのせます。よろしくお願いします。

### ソースコード （※前提：cordova.jsは読み込んでいる状態）

  * HTML部分

[code]

    <div class="photo-open"><p>写真選択</p></div>
    <div class="photo"></div>
    
[/code]

  * JavaScript部分

[code]

    $(function() { 
      // ギャラリー選択 
      $('.photo-open').on('click', function(){ 
        takeFromGallery(); 
      }); 
    
      function takeFromGallery() { 
        var onSuccess = function(imageData) { 
          // プレビュー表示 
          $('.photo').attr('src', 'data:image/jpeg;base64,'+ imageData); 
        }; 
    
        getPictureFromGallery(onSuccess); 
      } 
    
      var getPictureFromGallery = function(onSuccess) { 
        var options = { 
          quality: 50, 
          sourceType : Camera.PictureSourceType.PHOTOLIBRARY, 
          correctOrientation:true, 
          destinationType: Camera.DestinationType.DATA_URL 
        }; 
    
        navigator.camera.getPicture(function(imageURI) { 
          onSuccess(imageURI); 
        }, onFail, options); 
      }; 
    }
    
[/code]


CC BY-SA 3.0
2015-11-11T04:53:02.430
18658
2016-02-13T12:30:53.617
2020-06-17T08:14:45.997
-1
13211
question
android cordova
cordovaを用いたandroidアプリにて画像選択時強制終了


エラー内容が記載されておりませんので確実な解決方法は回答しかねますが、恐らく、非同期で処理すべきところを同期的に処理しているために、存在しない写真へのパスを参照し、エラーが発生し強制終了してしまっているのではないでしょうか。

例えば、非同期処理で処理されるべきであろう `getPicture()` について、次のようにすると良いかもしれません。(`var
options`の値についても使用したいはず、と記載のソースコードから推定しています)

[code]

    navigator.camera.getPicture(options).then(function(imageURI) { 
      onSuccess(imageURI); 
    }, function (error) {
      onFail();
    }); 
    
[/code]


CC BY-SA 3.0
2016-01-14T12:00:39.103
20920
2016-01-14T12:07:41.870
2016-01-14T12:07:41.870
7423
7423
18658
answer