File upload able and downloadable webview java code for ndroid studio!!!

     activity_main.xml          


<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity">
   <WebView       android:id="@+id/ifview"       android:layout_width="match_parent"       android:layout_height="match_parent">         </WebView>
</RelativeLayout>


MainActivity.java


package com.sigmakib110667.webview3;
import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import androidx.core.content.ContextCompat;
import android.Manifest;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Intent;import android.content.pm.PackageManager;import android.content.res.Configuration;import android.net.Uri;import android.os.Build;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.util.Log;import android.view.KeyEvent;import android.view.View;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 java.io.File;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;
public class MainActivity extends AppCompatActivity
 {
    private static final String TAG = MainActivity.class.getSimpleName();    private final static int FCR = 1;    WebView webView;    private String mCM;    private ValueCallback<Uri> mUM;    private ValueCallback<Uri[]> mUMA;
    @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.activity_main);
        if (Build.VERSION.SDK_INT >= 23 && (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)) {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}, 1);        }

        webView = (WebView) findViewById(R.id.ifview);        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 < 19)
        {
            webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);        }

        webView.setWebViewClient(new Callback());
        //Set your URL here

        webView.loadUrl("https://www.google.com/");
        //set url*****************
        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("*/*");                MainActivity.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("*/*");                MainActivity.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("*/*");                MainActivity.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), MainActivity.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(MainActivity.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;            }
        });    }

    // 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);    }

    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();        }
    }
}



Manifest.xml



<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.sigmakib110667.webview3"><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><uses-permission android:name="android.permission.INTERNET"></uses-permission>    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:roundIcon="@mipmap/ic_launcher_round"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>
</manifest>

Best of luck 



TRY TO MAKE SOMETHING NEW !!!



No comments

Only for you (°_°)

CPU solution ! Intel or AMD which one I should buy ? ||S:1,E:1||

Theme images by enot-poloskun. Powered by Blogger.