2013-10-14 10 views
20

Sto cercando di riprodurre video HTML5 in WebView e la necessità di setPluginsEnablednon setPluginsEnabled esistono per WebView

WebView.getSettings().setPluginsEnabled 

ma non è esiste per oggetto. qual è il problema?

questo è il mio codice:

package com.example.arachim; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class MainActivity extends Activity { 

WebView view; 

//@SuppressWarnings("deprecation") 
@Override 
protected void onCreate(Bundle savedInstanceState) 

{ 
    super.onCreate(savedInstanceState); 

    view = new WebView(this); 

    String url= new String("http://broken-links.com/tests/video/"); 
    WebChromeClient chromeClient = new WebChromeClient(); 
    WebViewClient wvc = new WebViewClient(); 

    view.setWebChromeClient(chromeClient); 
    view.setWebViewClient(wvc); 
    view.getSettings().setJavaScriptEnabled(true); 
    view.getSettings().setP 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
    } 
} 

risposta

29

La funzione WebView.getSettings().setPluginsEnabled(); metodo è stato deprecato dal livello di API 9, ed è stata rimossa nel livello di API 18. È possibile utilizzare la funzione più recente WebView.getSettings().setPluginState(WebSettings.PluginState.ON); che è stata aggiunta a livello di API 8 ed è stato ritirato al livello API 18. Secondo i livelli di API WebSettings Documentation oltre 18 non supporteranno i plugin; Suppongo sia perché il plugin principale da supportare fosse il flash che Adobe non sviluppa più per i dispositivi mobili.

+0

Ho usato WebView.setPluginsEnabled() e targetSdkVersion 17 nella mia app (già in playstoe). Ora, sto per rilasciare la sua versione aggiornata con alcune nuove funzionalità. Ho impostato targetSdkVersion 19 ma l'ho compilato correttamente con Android build target 4.2.2. Ho verificato su varie versioni e la build funziona bene. C'è qualche motivo o preoccupazione nel rilasciare questa build? –

11

È possibile controllare come:

if (Build.VERSION.SDK_INT < 8) { 
     webview.getSettings().setPluginsEnabled(true); 
    } else { 
     webview.getSettings().setPluginState(PluginState.ON); 
    } 

Spero che questo aiuti.

+11

Se stai costruendo con API 18 o superiore, questo darà un errore del compilatore poiché il metodo 'setPluginsEnabled' non esiste più. –

+16

true - la prima volta che ho visto un metodo deprecato effettivamente rimosso – Dori

+1

@Dori: non viene rimosso, è solo nascosto: D – Houcine

2

setPluginsEnabled è disponibile per le versioni di Android SDK meno di 8, setPluginState - per SDK < 18. Si depricated per le versioni superiori a 18, e quindi abbiamo bisogno di usarli solo per SDK solo citati:

// Build.VERSION_CODES.FROYO = 8, Build.VERSION_CODES.JELLY_BEAN_MR2 = 18 

     if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { 
         webview.getSettings().setPluginsEnabled(true); 
     } 
     else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2){ 
         webview.getSettings().setPluginState(WebSettings.PluginState.ON); 
     } 
Problemi correlati