Selasa, 28 Juli 2020

WebView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
     
   <WebView 
    android:id="@+id/webView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/>     
</LinearLayout>


package com.androidexample.webview;

import java.io.File;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Parcelable;
import android.provider.MediaStore;
import android.webkit.ConsoleMessage;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebSettings.PluginState;
import android.widget.Toast;

public class ShowWebView extends Activity {
private WebView webView;
final Activity activity = this;
public Uri imageUri;
private static final int FILECHOOSER_RESULTCODE   = 2888;
    private ValueCallback<Uri> mUploadMessage;
    private Uri mCapturedImageURI = null;
   
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show_web_view);
   
String webViewUrl = "http://www.androidexample.com/media/webview/details.html";
webView = (WebView) findViewById(R.id.webView1); 
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setLoadWithOverviewMode(true);
   
    //webView.getSettings().setUseWideViewPort(true);
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.setScrollbarFadingEnabled(false);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setPluginState(PluginState.ON);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setSupportZoom(true);
   
    webView.loadUrl(webViewUrl);
   
startWebView();
}

private void startWebView() {
webView.setWebViewClient(new WebViewClient() {     
        ProgressDialog progressDialog;
        public boolean shouldOverrideUrlLoading(WebView view, String url) {             
        if(url.contains("ExternalLinks")){
        view.getContext().startActivity(
                        new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
        return true;
       
        } else {
                view.loadUrl(url);
                return true;
            }          
        }
        public void onLoadResource (WebView view, String url) {
            if (progressDialog == null && url.contains("androidexample")
            )
            {
                progressDialog = new ProgressDialog(ShowWebView.this);
                progressDialog.setMessage("Loading...");
                progressDialog.show();
            }
        }
       
        // Called when all page resources loaded
        public void onPageFinished(WebView view, String url) {
       
            try{
            // Close progressDialog
            if (progressDialog.isShowing()) {
                progressDialog.dismiss();
                progressDialog = null;
            }
            }catch(Exception exception){
                exception.printStackTrace();
            }
        }
     
    });
   
    webView.setWebChromeClient(new WebChromeClient() {
        public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType){ 
           /**updated, out of the IF **/
                            mUploadMessage = uploadMsg;
           /**updated, out of the IF **/
            try{
            File imageStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "AndroidExampleFolder");
                if (!imageStorageDir.exists()) {
                    imageStorageDir.mkdirs();
                }
                File file = new File(imageStorageDir + File.separator + "IMG_" + String.valueOf(System.currentTimeMillis()) + ".jpg");
                mCapturedImageURI = Uri.fromFile(file); // save to the private variable

                final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);
               // captureIntent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

                Intent i = new Intent(Intent.ACTION_GET_CONTENT);
                i.addCategory(Intent.CATEGORY_OPENABLE);
                i.setType("image/*");

                Intent chooserIntent = Intent.createChooser(i, "Image Chooser");
                chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Parcelable[] { captureIntent });

                startActivityForResult(chooserIntent, FILECHOOSER_RESULTCODE);
              }
             catch(Exception e){
            Toast.makeText(getBaseContext(), "Camera Exception:"+e, Toast.LENGTH_LONG).show();
             }
            //}
        }
       
        public void openFileChooser(ValueCallback<Uri> uploadMsg){
            openFileChooser(uploadMsg, "");
        }
        public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
            openFileChooser(uploadMsg, acceptType);
        }

        public boolean onConsoleMessage(ConsoleMessage cm) {       
            onConsoleMessage(cm.message(), cm.lineNumber(), cm.sourceId());
        //Toast.makeText(getBaseContext(), cm.message()+" :message", Toast.LENGTH_LONG).show();
            return true;
        }
        public void onConsoleMessage(String message, int lineNumber, String sourceID) {
        }
        /** Added code to clarify chooser. **/
   
    });
 
   
   
   
}


@Override 
protected void onActivityResult(int requestCode, int resultCode,  Intent intent) {
if(requestCode==FILECHOOSER_RESULTCODE)  { 
    if (null == this.mUploadMessage) {
            return;
        }
   Uri result=null;
   try{
        if (resultCode != RESULT_OK) {
            result = null;
           
        } else {
            result = intent == null ? mCapturedImageURI : intent.getData();
        }
    }
        catch(Exception e){
            Toast.makeText(getApplicationContext(), "activity :"+e, Toast.LENGTH_LONG).show();
        }
       
    mUploadMessage.onReceiveValue(result);
    mUploadMessage = null;

}

}
@Override
    public void onBackPressed() {
        if(webView.canGoBack()) {
            webView.goBack();
        } else {
            super.onBackPressed();
        }
    }

}



<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidexample.webview"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"/>

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
       
        <activity
            android:label="@string/app_name"
            android:name=".ShowWebView"
            android:theme="@android:style/Theme.NoTitleBar">
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>











Tidak ada komentar:

Posting Komentar