Android Webview html5 для Caster.fm - PullRequest
0 голосов
/ 27 мая 2020

Вы все используете Caster.fm? Я обычно использую его для потоковой передачи звука через Winamp. Но вот мой вопрос: как встроить проигрыватель в веб-просмотр (android)?

Я пытался использовать этот код: под html файлом (папка ресурсов)

enter image description here

, а затем поместив их в метод onCreate ():

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_radio_streaming);

        webview = (WebView) findViewById(R.id.webview);

        webview.setWebChromeClient(new WebChromeClient());
        webview.setWebViewClient(new WebViewClient());
        webview.getSettings().setJavaScriptEnabled(true);
        webview.getSettings().setAllowFileAccess(true);
        webview.getSettings().setPluginState(WebSettings.PluginState.ON);
        webview.getSettings().setUserAgentString("Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.14 (KHTML, like Gecko) Mobile/12F70");


        try {
            //Log.d(TAG, "Enabling HTML5-Features");
            Method m1 = WebSettings.class.getMethod("setDomStorageEnabled", new Class[]{Boolean.TYPE});
            m1.invoke(webview, Boolean.TRUE);

            Method m2 = WebSettings.class.getMethod("setDatabaseEnabled", new Class[]{Boolean.TYPE});
            m2.invoke(webview, Boolean.TRUE);

            Method m3 = WebSettings.class.getMethod("setDatabasePath", new Class[]{String.class});
            m3.invoke(webview, "/data/data/" + getPackageName() + "/databases/");

            Method m4 = WebSettings.class.getMethod("setAppCacheMaxSize", new Class[]{Long.TYPE});
            m4.invoke(webview, 10248);

            Method m5 = WebSettings.class.getMethod("setAppCachePath", new Class[]{String.class});
            m5.invoke(webview, "/data/data/" + getPackageName() + "/cache/");

            Method m6 = WebSettings.class.getMethod("setAppCacheEnabled", new Class[]{Boolean.TYPE});
            m6.invoke(webview, Boolean.TRUE);

            //Log.d(TAG, "Enabled HTML5-Features");
        }
        catch (Exception e) {
            Toast.makeText(this,e.getMessage(),Toast.LENGTH_LONG);
        }

        webview.loadData(loadFileContent(), "text/html", "utf-8");
    }

метод чтения файла в активе на самом деле loadFileContent () :

 private String loadFileContent() {
        StringBuilder out = new StringBuilder();

        try {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(this.getAssets().open("streamer.html")));

            String eachline = null;

            while ((eachline = bufferedReader.readLine()) != null) {
                out.append(eachline);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

        return out.toString();
    }

но в android webview вывод просто пуст!

Между тем, если я тестировал его (код iframe) в настольный браузер, вывод был правильным: *1024*

enter image description here

...