2016-09-30 4 views
1

Ich muss eine Ladeleiste vor dem Öffnen der Adresse in der WebView erstellen. Es ist leer und kann nicht mit den hier gefundenen Themen umgehen. Sie müssen vor dem Öffnen laden.Laden in WebView

Entschuldigung für mein Englisch.

public class TelaPrincipal extends ActionBarActivity{ 

WebView webView; 
private static final String TAG = TelaPrincipal.class.getSimpleName(); 
private String mCM; 
private ValueCallback<Uri> mUM; 
private ValueCallback<Uri[]> mUMA; 
private final static int FCR=1; 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent){ 
    super.onActivityResult(requestCode, resultCode, intent); 
    if(Build.VERSION.SDK_INT >= 21){ 
     Uri[] results = null; 
     //Check if response is positive 
     if(resultCode== Activity.RESULT_OK){ 
      if(requestCode == FCR){ 
       if(null == mUMA){ 
        return; 
       } 
       if(intent == null){ 
        //Capture Photo if no image available 
        if(mCM != null){ 
         results = new Uri[]{Uri.parse(mCM)}; 
        } 
       }else{ 
        String dataString = intent.getDataString(); 
        if(dataString != null){ 
         results = new Uri[]{Uri.parse(dataString)}; 
        } 
       } 
      } 
     } 
     mUMA.onReceiveValue(results); 
     mUMA = null; 
    }else{ 
     if(requestCode == FCR){ 
      if(null == mUM) return; 
      Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData(); 
      mUM.onReceiveValue(result); 
      mUM = null; 
     } 
    } 
} 

@SuppressLint({"SetJavaScriptEnabled", "WrongViewCast"}) 
@Override 
protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.telaprincipal); 

    webView = (WebView) findViewById(R.id.webView); 
    assert webView != null; 
    WebSettings webSettings = webView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    webSettings.setAllowFileAccess(true); 

    if(Build.VERSION.SDK_INT >= 21){ 
     webSettings.setMixedContentMode(0); 
     webView.setLayerType(View.LAYER_TYPE_HARDWARE, null); 
    }else if(Build.VERSION.SDK_INT >= 19){ 
     webView.setLayerType(View.LAYER_TYPE_HARDWARE, null); 
    }else if(Build.VERSION.SDK_INT >=11 && Build.VERSION.SDK_INT < 19){ 
     webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
    } 
    webView.setWebViewClient(new Callback()); 
    webView.loadUrl("https://strikebrasil.gmpe.com.br/login"); 
    webView.setWebChromeClient(new WebChromeClient(){ 
     //For Android 3.0+ 
     public void openFileChooser(ValueCallback<Uri> uploadMsg){ 
      mUM = uploadMsg; 
      Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
      i.addCategory(Intent.CATEGORY_OPENABLE); 
      i.setType("image/*"); 
      TelaPrincipal.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FCR); 
     } 

     // For Android 3.0+, above method not supported in some android 3+ versions, in such case we use this 
     public void openFileChooser(ValueCallback uploadMsg, String acceptType){ 
      mUM = uploadMsg; 
      Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
      i.addCategory(Intent.CATEGORY_OPENABLE); 
      i.setType("*/*"); 
      TelaPrincipal.this.startActivityForResult(
        Intent.createChooser(i, "File Browser"), 
        FCR); 
     } 
     //For Android 4.1+ 
     public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){ 
      mUM = uploadMsg; 
      Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
      i.addCategory(Intent.CATEGORY_OPENABLE); 
      i.setType("image/*"); 
      TelaPrincipal.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), TelaPrincipal.FCR); 
     } 
     //For Android 5.0+ 
     public boolean onShowFileChooser(
       WebView webView, ValueCallback<Uri[]> filePathCallback, 
       WebChromeClient.FileChooserParams fileChooserParams){ 
      if(mUMA != null){ 
       mUMA.onReceiveValue(null); 
      } 
      mUMA = filePathCallback; 
      Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      if(takePictureIntent.resolveActivity(TelaPrincipal.this.getPackageManager()) != null){ 
       File photoFile = null; 
       try{ 
        photoFile = createImageFile(); 
        takePictureIntent.putExtra("PhotoPath", mCM); 
       }catch(IOException ex){ 
        Log.e(TAG, "Image file creation failed", ex); 
       } 
       if(photoFile != null){ 
        mCM = "file:" + photoFile.getAbsolutePath(); 
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile)); 
       }else{ 
        takePictureIntent = null; 
       } 
      } 
      Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT); 
      contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE); 
      contentSelectionIntent.setType("image/*"); 
      Intent[] intentArray; 
      if(takePictureIntent != null){ 
       intentArray = new Intent[]{takePictureIntent}; 
      }else{ 
       intentArray = new Intent[0]; 
      } 

      Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER); 
      chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent); 
      chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser"); 
      chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray); 
      startActivityForResult(chooserIntent, FCR); 
      return true; 
     } 
    }); 

} 
public class Callback extends WebViewClient{ 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl){ 
     Toast.makeText(getApplicationContext(), "Failed loading app!", Toast.LENGTH_SHORT).show(); 
    } 
} 

// Create an image file 
private File createImageFile() throws IOException{ 
    @SuppressLint("SimpleDateFormat") String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String imageFileName = "img_"+timeStamp+"_"; 
    File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 
    return File.createTempFile(imageFileName,".jpg",storageDir); 
} 
@Override 
public boolean onKeyDown(int keyCode, @NonNull KeyEvent event){ 
    if(event.getAction() == KeyEvent.ACTION_DOWN){ 
     switch(keyCode){ 
      case KeyEvent.KEYCODE_BACK: 
       if(webView.canGoBack()){ 
        webView.goBack(); 
       }else{ 
        finish(); 
       } 
       return true; 
     } 
    } 
    return super.onKeyDown(keyCode, event); 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig){ 
    super.onConfigurationChanged(newConfig); 
} 

}

Ich habe einen Spritzer vor ... aber was ich nicht alles weiß, wenn die Seite noch nicht geladen worden. Ich möchte eine Sendung anzeigen und nur dann, wenn Sie zu 100% geladen sind, die Seite anzeigen. Danke

+0

Ich hoffe, dies würde helfen: [Zeige ProgressDialog, bis WebView das Laden der WebPage abgeschlossen hat] (http://StackOverflow.com/a/33444421/6213557). –

Antwort

0

Setzen Sie Ihr Webview in Framelayout und Putan Imageview auch in framelayout. Während die Seite geladen wird, zeige die imageView (animiere wenn du willst).