Webview dengan akses kamera dan upload file

Salam master semua, mohon bantuan bagaimana agar webview android studio dapat mengakses kamera dan mengupload file ke server, ketika form input file dari kode html di akses, terima kasih

avatar ichon34
@ichon34

2 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

Tanggapan

Apa yang sudah kamu buat?

1 Jawaban:

Maaf Master, jadi bagaimana agar <input type='file' accept='image/*' multiple='multiple' capture='camera'></input> bisa berfungsi di android

<pre> package com.example.wilson.absensineu;

import android.annotation.TargetApi; import android.content.ActivityNotFoundException; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.nfc.Tag; import android.os.Build; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.View; import android.view.Menu; import android.view.MenuItem; import android.webkit.PermissionRequest; import android.webkit.ValueCallback; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; import android.Manifest;

import java.util.ArrayList; import java.util.List;

public class MainActivity extends AppCompatActivity {

static WebView webView;
private ValueCallback&amp;lt;Uri&amp;gt; mUploadMessage;
public ValueCallback&amp;lt;Uri[]&amp;gt; uploadMessage;
public static final int REQUEST_SELECT_FILE = 100;
private final static int FILECHOOSER_RESULTCODE = 2888;
public static final int MY_PERMISSIONS_REQUEST_CAMERA = 100;
public static final String ALLOW_KEY = &quot;ALLOWED&quot;;
public static final String CAMERA_PREF = &quot;camera_pref&quot;;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    webView = (WebView) this.findViewById(R.id.WebView1);
    WebSettings mWebSettings = webView.getSettings();
    mWebSettings.setJavaScriptEnabled(true);
    mWebSettings.setSaveFormData(true);
    mWebSettings.setSupportZoom(true);
    mWebSettings.setBuiltInZoomControls(true);
    mWebSettings.setAllowFileAccess(true);
    mWebSettings.setAllowFileAccess(true);
    mWebSettings.setDomStorageEnabled(true);
    mWebSettings.setAllowUniversalAccessFromFileURLs(true);
    mWebSettings.setAllowFileAccessFromFileURLs(true);
    mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);


    webView.setWebViewClient(new WebViewClient(){

        @Override
        public void onPageFinished(WebView view, String url) {
            //hide loading image
            findViewById(R.id.imageView2).setVisibility(View.GONE);
            findViewById(R.id.progressBarsatu).setVisibility(View.GONE);
            //show webview
            findViewById(R.id.WebView1).setVisibility(View.VISIBLE);
        }

    });
    webView.setWebChromeClient(new WebChromeClient(){

        @Override
        public void onPermissionRequest(final PermissionRequest request){

            if(Build.VERSION.SDK_INT &amp;gt;= Build.VERSION_CODES.LOLLIPOP){
                request.grant(request.getResources());
            }

        }
        protected void openFileChooser(ValueCallback uploadMsg, String acceptType)
        {
            mUploadMessage = uploadMsg;
            Intent i = new Intent(Intent.ACTION_GET_CONTENT);
            i.addCategory(Intent.CATEGORY_OPENABLE);
            i.setType(&quot;*/*&quot;);
            startActivityForResult(Intent.createChooser(i, &quot;File Browser&quot;), FILECHOOSER_RESULTCODE);
        }

        public boolean onShowFileChooser(WebView webView, ValueCallback&amp;lt;Uri[]&amp;gt; filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)
        {
            if (uploadMessage != null) {
                uploadMessage.onReceiveValue(null);
                uploadMessage = null;
            }

            uploadMessage = filePathCallback;

            Intent intent = fileChooserParams.createIntent();
            try
            {
                startActivityForResult(intent, REQUEST_SELECT_FILE);
            } catch (ActivityNotFoundException e)
            {
                uploadMessage = null;
                Toast.makeText(MainActivity.this.getApplicationContext(), &quot;Cannot Open File Chooser&quot;, Toast.LENGTH_LONG).show();
                return false;
            }
            return true;
        }

        protected void openFileChooser(ValueCallback&amp;lt;Uri&amp;gt; uploadMsg, String acceptType, String capture)
        {
            mUploadMessage = uploadMsg;
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.addCategory(Intent.CATEGORY_OPENABLE);
            intent.setType(&quot;*/*&quot;);
            startActivityForResult(Intent.createChooser(intent, &quot;File Browser&quot;), FILECHOOSER_RESULTCODE);
        }

        protected void openFileChooser(ValueCallback&amp;lt;Uri&amp;gt; uploadMsg)
        {
            mUploadMessage = uploadMsg;
            Intent i = new Intent(Intent.ACTION_GET_CONTENT);
            i.addCategory(Intent.CATEGORY_OPENABLE);
            i.setType(&quot;*/*&quot;);
            startActivityForResult(Intent.createChooser(i, &quot;File Chooser&quot;), FILECHOOSER_RESULTCODE);
        }

    });
    webView.loadUrl(&quot;http://192.168.173.1/absen&quot;);

}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent)
{
    if(Build.VERSION.SDK_INT &amp;gt;= Build.VERSION_CODES.LOLLIPOP)
    {
        if (requestCode == REQUEST_SELECT_FILE)
        {
            if (uploadMessage == null)
                return;
            uploadMessage.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, intent));
            uploadMessage = null;
        }
    }
    if (Build.VERSION.SDK_INT &amp;gt;= Build.VERSION_CODES.M) {

        int hasCameraPermission = checkSelfPermission(Manifest.permission.CAMERA);

        List&amp;lt;String&amp;gt; permissions = new ArrayList&amp;lt;String&amp;gt;();

        if (hasCameraPermission != PackageManager.PERMISSION_GRANTED) {
            permissions.add(Manifest.permission.CAMERA);

        }
        if (!permissions.isEmpty()) {
            requestPermissions(permissions.toArray(new String[permissions.size()]), 111);
        }
    }
    else if (requestCode == FILECHOOSER_RESULTCODE)
    {
        if (null == mUploadMessage)
            return;
        // Use MainActivity.RESULT_OK if you&#039;re implementing WebView inside Fragment
        // Use RESULT_OK only if you&#039;re implementing WebView inside an Activity
        Uri result = intent == null || resultCode != MainActivity.RESULT_OK ? null : intent.getData();
        mUploadMessage.onReceiveValue(result);
        mUploadMessage = null;
    }
    else
        Toast.makeText(MainActivity.this.getApplicationContext(), &quot;Failed to Upload Image&quot;, Toast.LENGTH_LONG).show();

}

} </pre>

avatar ichon34
@ichon34

2 Kontribusi 0 Poin

Dipost 4 tahun yang lalu

Tanggapan

Permisi, saya coba praktek dan kamera belum muncul. Mohon bantuannya

gimana bang sudah bisa belum? kebetulan saya mengalami masalah yang sama. mohon tanggapan nya, bisa di share jika sudah berhasil.

Login untuk ikut Jawaban