質問編集履歴

1 追加のお願いを記入

kuronecocafe

kuronecocafe score 8

2017/01/18 23:24  投稿

Drupal8の画像投稿ボタンをAndroid(API=19以上)のWebviewで操作できるようにしたい
###前提・実現したいこと
○Drupal8で作成したサイトをAndroidアプリを使って閲覧+操作をできるようにしたい。
○Android Webview を使用して閲覧ができるように は なりました。
○コメントや 文字のみによる記事投稿 は可能です。
**通常はブラウザから閲覧して押下すると、
PCのブラウザ⇨【ファイル選択ウィンドウ】
スマホ等のブラウザ⇨【カメラまたは写真フォルダの選択ポップアップ】
が出現します。**
○今回期待する挙動は、Androidタブレットでこのアプリを使用して「ファイルを選択」ボタンを押下すると【カメラまたは写真フォルダの選択ポップアップ】が表示され、実際にカメラで撮影した画像をアップしたり、写真フォルダから画像を選択してアップしたりすることです。
###発生している問題・エラーメッセージ
○記事作成時に写真も投稿しようと「ファイルを選択」ボタンを押下すると、反応しません。
○エラーメッセージは出ていません。
```
```
###該当のソースコード
```MainActivity.java
package net.hogehoge.hogehogeview;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
   private WebView mWebView;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       mWebView = (WebView)findViewById(R.id.webview);
       //WebViewオブジェクトからWebSettingオブジェクトを取得
       WebSettings webSettings = mWebView.getSettings();
       //webViewの設定でjavascriptを有効にする
       mWebView.getSettings().setJavaScriptEnabled(true);
       //標準ブラウザをキャンセル
       mWebView.setWebViewClient(new WebViewClient());
       //アプリ起動 ⇨ webViewでDrupalサイトを呼び出し、表示する
       mWebView.loadUrl("http://hogehoge.net/drupal/");
   }
   @JavascriptInterface
   public void doSomething(String input) {
       mWebView.evaluateJavascript("http://hogehoge.net/drupal/core/modules/file/file.js", null);
   }
}
```
###試したこと
○APIレベル=19以上で、@JavascriptInterface と evaluateJavascript を使用することを知り、Drupal8の「ファイルを選択する」ボタンに関連するJavascriptファイルのアドレスを evaluateJavascript 以下に指定してみました。
○Drupal8は twig テンプレートエンジンのテンプレートファイルで動いているので、evaluateJavascriptで引っ掛けるJavascriptをサーバー内の .js ファイルに指定してみました。
###補足情報(言語/FW/ツール等のバージョンなど)
○Android Studio Version 2.2.3
○Minimum SDK API 19:Android4.4(KitKat)
○実機テスト端末 ASUS K01U (Android5.0)
○実機テスト端末 ASUS K01U (Android5.0)
◉上記 MainActivity.java へのアドバイスや「もっとこうしたほうがいい」などの情報などございましたら、後学のために是非教えてください!【2017.01.18追記】
  • Java

    24782 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • JavaScript

    37868 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Android

    10435 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Drupal

    47 questions

    DrupalはPHPで書かれたオープンソースのCMSフレームワークです。

  • Android Studio

    6712 questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る