24183


Android:WebViewのJavaScriptにローカル画像を渡す方法を教えて下さい。

詳細：  
お世話になっております。  
  
WebViewで表示されたHPにある「写真をサーバーにアップロードする機能」にローカル保存された画像を渡したいのですがうまく行っておりません。  
標準ブラウザでは動作することからアプリ側のコードの問題と考え勉強しているのですが自信が無く質問させていただきました。  
アドバイスをいただければ幸いです。

現在、理解していることは、ギャラリーからの読み込みやwebv.loadUrl(javascript:);に使用するコードはAPIレベルにより切り替える必要があることです。

迷っていることは  
onActivityResult(int requestCode, int resultCode, Intent Intent){}  
で帰ってきたIntent（画像のパス）をそのままwebv.loadUrl(javascript:)に渡すのか、他の処理をしてから処理するのか？  
webv.loadUrl(javascript:〜)に当てはめるコードの内容です。  
もしくは、全く勘違いしていないか？です。  
乱文で申し訳ありません。  
よろしくお願いたします。

参考サイト  
<https://syncer.jp/javascript-reverse-reference/output-local-image>  
<http://www.buildinsider.net/mobile/bookhtml5hybrid/1102>

「web設定」

[code]

        webv = (WebView) v.findViewById(R.id.webview_id);
    
        //Settings
        WebSettings webSettings = webv.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setPluginState(WebSettings.PluginState.ON);
        webSettings.setSupportMultipleWindows(false);
        webSettings.setDomStorageEnabled(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setAppCacheEnabled(true);
        webSettings.getUserAgentString();
    
[/code]


CC BY-SA 3.0
2016-04-02T08:59:22.857
23683
2016-04-20T10:12:24.033
8670
question
javascript android webview
Android:WebViewのJavaScriptにローカル画像を渡す方法を教えて下さい。


やりたい事と違うと申し訳ございませんが、  
下記を参考にしてみて下さい。

[code]

        //画像のパスから画像のBitmapを取得
        Bitmap butmap;
        //Bitmapをbyte配列へ変換
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        butmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
        byte[] bytes = byteArrayOutputStream.toByteArray();
        //byte配列をBase64へ変換
        String strBase64 =  Base64.encodeToString(bytes, Base64.NO_WRAP);
        //Base64からJavaScriptへ
        String base64Html = "data:" + "image/png" + ";base64," + strBase64;
        String js = String.format("function hoge( imageUrl ) { console.log(imageUrl); }  hoge(\"%s\");", base64Html);
        webv.loadUrl( "javascript:" + js );
    
[/code]


CC BY-SA 3.0
2016-04-20T10:12:24.033
24183
2016-04-20T10:12:24.033
8567
23683
answer