Android WebView App öffnet den File-Browser nicht beim klick auf "Datei auswählen"...

  • Hallo zusammen,



    ich habe vor kurzem meine eigene Android WebView App mit dem Android
    Studio geschrieben und erstell und bin auch zu 99% sehr zufrieden
    damit...



    Leider habe ich gerade ein Problem, dass ich nicht einfach so mal mit Google-Suche und YouTube tutorial lösen kann...



    Und zwar bietet die Webseite die ich als WebView in der Android App laufen lassen die Möglichkeit Fotos zu uploaden...
    Das funktioniert auch alles wunderbar auf dem Desktop oder auch auf dem handy mit einem Browser wie z.B. Chrome...



    Nur leider nicht in der Android WebView App die ich geschrieben habe...



    Ich habe jetzt schon so viel probiert und stehe an dem Punkt an dem ich hilfe benötige...





    Hier ist der Code meiner App:




    AndroidManifest.xml



    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.one.humanitas">


    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.CAMERA"/>


    <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"
    tools:ignore="AllowBackup,GoogleAppIndexingWarning">
    <activity android:name=".SplashScreen"
    android:theme="@style/SplashTheme">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />


    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>



    </activity>
    <activity android:name=".MainActivity"
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />


    <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    </activity>
    </application>


    </manifest>






    MainActivity.java



    package com.one.humanitas;


    import android.Manifest;
    import android.content.Context;
    import android.content.pm.PackageManager;
    import android.content.res.Configuration;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.os.Bundle;
    import android.view.View;
    import android.webkit.WebChromeClient;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.FrameLayout;
    import android.widget.ProgressBar;


    import androidx.appcompat.app.AppCompatActivity;
    import androidx.core.app.ActivityCompat;
    import androidx.core.content.ContextCompat;


    public class MainActivity extends AppCompatActivity {


    WebView mWebView;
    ProgressBar progressBar;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    // Here, thisActivity is the current activity


    if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
    }


    if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
    }


    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 1);
    }


    setContentView(R.layout.activity_main);



    progressBar = (ProgressBar) findViewById(R.id.progressbar);
    mWebView = (WebView) findViewById(R.id.webView);


    progressBar.setVisibility(View.VISIBLE);
    mWebView.setWebViewClient(new Browser_home());
    mWebView.setWebChromeClient(new MyChrome());
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setAllowFileAccess(true);
    webSettings.setAppCacheEnabled(true);



    if(savedInstanceState==null){
    mWebView.post(new Runnable() {
    @Override
    public void run() {
    loadWebsite();
    }
    });
    }


    }



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


    @Override
    protected void onSaveInstanceState(Bundle outState )
    {
    super.onSaveInstanceState(outState);
    mWebView.saveState(outState);
    }


    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState)
    {
    super.onRestoreInstanceState(savedInstanceState);
    mWebView.restoreState(savedInstanceState);
    }


    private void loadWebsite() {
    ConnectivityManager cm = (ConnectivityManager) getApplication().getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting()) {
    mWebView.loadUrl("https://community.humanitas.one");
    } else {
    mWebView.setVisibility(View.GONE);
    }
    }


    class Browser_home extends WebViewClient {


    Browser_home() {
    }


    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
    super.onPageStarted(view, url, favicon);


    }


    @Override
    public void onPageFinished(WebView view, String url) {
    setTitle(view.getTitle());
    progressBar.setVisibility(View.GONE);
    super.onPageFinished(view, url);


    }
    }


    private class MyChrome extends WebChromeClient {


    private View mCustomView;
    private WebChromeClient.CustomViewCallback mCustomViewCallback;
    protected FrameLayout mFullscreenContainer;
    private int mOriginalOrientation;
    private int mOriginalSystemUiVisibility;


    MyChrome() {}


    public Bitmap getDefaultVideoPoster()
    {
    if (mCustomView == null) {
    return null;
    }
    return BitmapFactory.decodeResource(getApplicationContext().getResources(), 2130837573);
    }


    public void onHideCustomView()
    {
    ((FrameLayout)getWindow().getDecorView()).removeView(this.mCustomView);
    this.mCustomView = null;
    getWindow().getDecorView().setSystemUiVisibility(this.mOriginalSystemUiVisibility);
    setRequestedOrientation(this.mOriginalOrientation);
    this.mCustomViewCallback.onCustomViewHidden();
    this.mCustomViewCallback = null;
    }


    public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback)
    {
    if (this.mCustomView != null)
    {
    onHideCustomView();
    return;
    }
    this.mCustomView = paramView;
    this.mOriginalSystemUiVisibility = getWindow().getDecorView().getSystemUiVisibility();
    this.mOriginalOrientation = getRequestedOrientation();
    this.mCustomViewCallback = paramCustomViewCallback;
    ((FrameLayout)getWindow().getDecorView()).addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1));
    getWindow().getDecorView().setSystemUiVisibility(3846);
    }


    }


    @Override
    public void onBackPressed() {


    if( mWebView.canGoBack()){
    mWebView.goBack();
    }else{
    //Do something else. like trigger pop up. Add rate app or see more app
    }
    }


    }




    Berechtigungen für Storage und Camera werden abgefragt und gesetzt. Nur
    passiert halt nichts wenn ich auf den button gehe "Datei auswählen"...



    Ich hoffe wirklich das mir hier jemand weiter helfen kann.




    Vielen lieben dank dafür schon im voraus
    Fabio

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!