2014-02-10 2 views
0

В моем приложении я использую webview и в этом открываю URL-адрес «drive.google.com/keep» И при создании заметок на веб-странице есть возможность выбрать изображение из галереи , И пока я нажимаю на это, чтобы выбрать изображение, ничего не происходит, и приложение остается там, ничего не делая. В браузере он правильно открывает галерею. Я думаю, что мне не хватает того, что я не знаю. Вот мой код: КодWebview not opening gallery

активность:

public void webviewSetup() { 
    setContentView(R.layout.activity_main); 

    CookieSyncManager.createInstance(this); 

    keepWebView = (WebView) findViewById(R.id.activity_main_webview); 

    keepWebView.addJavascriptInterface(keepWebView, url); 
    WebSettings webSet = keepWebView.getSettings(); 
    webSet.setJavaScriptEnabled(true); 

    final ProgressBar pb = getProgressBar(); 
    if (pb != null) 
     pb.setVisibility(View.VISIBLE); 
    // Enabling local database 
    webSet.setDatabaseEnabled(true); 

    // Enable manifest cache. 
    String cachePath = this.getApplicationContext() 
      .getDir("cache", Context.MODE_PRIVATE).getPath(); 
    webSet.setAppCachePath(cachePath); 
    webSet.setAllowFileAccess(true); 
    webSet.setAppCacheEnabled(true); 
    webSet.setDomStorageEnabled(true); 
    // webSet.setAppCacheMaxSize(1024 * 1024 * 8); 
    webSet.setCacheMode(WebSettings.LOAD_DEFAULT); 

    // loads the url 
    keepWebView.loadUrl(url); 
    keepWebView.setWebViewClient(new KeepWebViewClient(this, keepWebView, 
      pb)); 
} 

И мой KeepWebViewClient.class

public class KeepWebViewClient extends WebViewClient { 
Activity activity; 
WebView wv; 
View pd; 

public KeepWebViewClient(Activity activity, WebView wv, View pd) { 
    this.activity = activity; 
    this.wv = wv; 
    this.pd = pd; 
} 

@Override 
public boolean shouldOverrideUrlLoading(WebView mWebView, String url) { 
    mWebView.loadUrl(url); 
    return true; 
} 

@Override 
public void onPageFinished(WebView view, String url) { 
    if (pd != null) 
     pd.setVisibility(View.GONE); 

    CookieSyncManager.getInstance().sync(); 
    super.onPageFinished(view, url); 
} 

@Override 
public void onPageStarted(WebView view, String url, Bitmap favicon) { 
    Log.d("GoogleApps", "loading " + url); 

    if (pd != null) 
     pd.setVisibility(View.VISIBLE); 
    super.onPageStarted(view, url, favicon); 
} 
} 

Любая помощь будет очень ценна. Thanks

ответ

0

Вы не делаете ничего плохого. Механизм, используемый браузером для поддержки загрузки файлов (и выбора элемента из галереи), не является общедоступным API, доступным для приложений WebView.

Таким образом, вы можете использовать некоторые трюки, чтобы получить нужное поведение; однако имейте в виду, что эти трюки не работают в Android 4.4, и не существует обходного пути для поддержки загрузки файлов в WebView на KitKat.