Beiträge von Xcreen

    Hi herrm_no,
    ich habe mir das mal angeschaut und was gefunden, was ziemlich gut funktioniert. (getestet auf S8 mit Android 9)
    Leider gibt es keine offizielle API, sondern muss sich die Methoden selber besorgen. Daher kann ich dir nicht sagen für welche Android-Version das ganze funktioniert.
    Wichtig: Bluetooth muss an sein! Das kannst du ja selber noch prüfen, habe ich jetzt bei dem Beispiel außen vorgelassen.


    Android-Manifest:

    XML
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
        <uses-permission android:name="android.permission.BLUETOOTH" />
        <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />


    MainActivity:

    Layout:


    Soweit ich verstanden habe, gibt es die CustomTabs zwar ab Android 4.1. Allerdings wird der Chrome geöffnet, wenn die System Webview älter als Version 45 ist. (Bin mir nicht genau sicher, aber es kann so sein).
    Alternativ hast du noch einen Fehler in deinem Code, aber dafür müsstes du uns einmal deinen Code-Teil zeigen.

    Was genau hast du denn jetzt vor?
    Eine Android/iOS Webapp wird ganz anders programmiert als eine Native App.
    In deinem Beispiel: https://developer.android.com/…ing-navigation/nav-drawer wird der Navigation Drawer nativ erstellt.
    In deinem anderen Beispiel: https://gonative.io/share/opkrbk ist eine Webapp aber mit nativen Komponenten (Hybrid-App).


    Was genau möchtest du denn jetzt? Ein native Android-App oder eine Webapp/Hybrid-App?
    Bei einer Webapp brauchst du ein entsprechened Framework z.B. dein https://gonative.io/ oder https://cordova.apache.org/


    Aber bevor wir die helfen können, brauchen wir aufjeden Fall Infos womit du gerade arbeitest und was du vorhast.

    Der Chrome nutzt intern keinen Webview und wird wahrscheinlich noch über den Play-Store geupdatet. (Sprich ist im Gegensatz zu dem Webview auf einen aktuellen Stand)
    Unter neuen Geräten dient der Chrome als Webview (kann man in den Entwicker-Einstellungen einstellen), bei Google Freien Geräten wird der System Webview genutzt (der intern einen Chromium hat).
    Der System-Webview wird erst ab Android 5 geupdatet und ist vorher fest drin.


    CustomTabs sollten eigentlich funktionieren ab Android 4.1 ...

    Nein das hat nichts mit der Browser App zutun.
    Es geht um den System-Webview (dafür muss du in den Optionen den "Systemanwendungen anzeigen") anklicken.
    Ich sehe aber gerade das die Webviews bei APKMirror Android 5 brauchen. Keine Ahnung, ob man den Webview bei Android 4 noch nicht updaten kann.
    Scheint mir einfach so, das Android 4 die neuen Zertifikate nicht verarbeitet bekommt. Ohne das man den Webview in Android 4 updaten kann, wird es wohl schlicht nicht funktionieren.


    Ja lässt sich leider erst ab Android 5 updaten: https://android.stackexchange.…ystem-component-on-kitkat
    Also ist das Gerät wahrscheinlich schlicht zu alt.

    Es sieht so aus als supported dein Android Webview kein SHA2 Zertifikat.
    Auch wenn es bei Digicert anders steht, haben wohl mehrere das Problem.
    Welche Webview-Version ist installiert? Eventuell kannst du von Hand updaten? (Die passende APK gibts bei apkmirror)
    Probier mal deinen Webview mit folgender Seite: https://sha2test.force.com/s/


    Android 4.2.2 ist vom Februar 2013 entsprechend schon 6 Jahre alt. Das heißt, das auch die internen CA´s nicht unbedingt auf den aktuellen Stand ist.
    Falls du es via ein Webview-Update nicht beheben kannst, liegt es wahrscheinlich schlicht daran, dass die Android-Version einfach zu alt ist und das SSL-Zertifikat nicht entsprechend verarbeiten kann.


    Was für einen Error-Code/Description bekommst du denn noch bei deinem onReceivedError() ?

    Hi,
    du kannst SSL-Fehler umgehen via:



    Java
    webview.setWebViewClient(new WebViewClient() {
    
    
                @Override
                public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
                    handler.proceed();
                }
        });

    Dies funktioniert aber nicht unbedingt bei allein Seiten und ist auch nicht sicher.
    Um welche Seite geht es denn? Eventuell hat ist das SSL-Zertifakt zu alt/neu.

    Also es wäre mir neu das man über Android Studio ein Image installieren kann.
    Zum Image installieren hat jeder Hersteller meistens ein eigenes Tool passend zum Prozessor und Chipsatz. Diese Tools geben die Hersteller meistens aber nicht raus.
    Wie wurde das "falsche Update" denn installiert?



    Edit: Hier gibt es eine Anleitung für dein Handy: http://bbs.blackview.hk/viewtopic.php?f=144&t=54240
    Dort wird als Tool SP Flash Tool eingesetzt.

    Wahrscheinlich fehlt google() in deiner build.gradle datei:
    Der Anfang sollte so aussehen:

    Wie hast du die App neu compiliert?
    Wahrscheinlich wird die App Klassen nutzen, die du unter Android 4 einfach nicht hast und deshalb bekommst du den Fehler. (z.B. Material Design ?)

    android.enableJetifier=true versucht alle Third-Party Librarys zu AndroidX zu konvertieren.
    Hast du mal es mal versucht mit: android.enableJetifier=false
    Falls das klappt, liegt es an irgendeiner Third-Party Library die du eingebunden hast und noch nicht passend läuft.
    Ich würde mal deine Third-Party Librarys durch gehen und bei https://mvnrepository.com/ schauen, welche Dependencies diese haben.
    Ggfs. solltest du mal überprüfen, ob du die Librarys durch neuere Versionen ersetzen kannst (eventuell ist das Problem dadurch ja schon behoben).

    Laut Logcat ist dein Hauptfehler das du einen Netzwerk-Zugriff aus dem Main-Thread startest.
    Unter Java direkt verursacht das nicht direkt einen Fehler wie unter Android, führt allerdings trotzdem dazu, das z.B. die GUI/Swing etc. einfriert.
    Deswegen musst du das ganze unter Android in einen neuen Thread starten.

    Hi Ebi,
    falls du via mCurrentUser = FirebaseAuth.getInstance().getCurrentUser(); keinen Nutzer bekommst (null) existiert die Methode getUid() auf dem Objekt natürlich nicht.


    Du müsstes einfach prüfen, ob getCurrentUser null zurückliefert (dann hast du keinen gültig eingeloggten Nutzer).

    Habe dein Code nur mal schnell überflogen und frage mich auch wie jogimuc, warum du Arrays statt normalen Variablen nutzt?


    Wie auch schon von jugimuc gesagt, müssen Double-Wert ein Punkt statt Komma haben.



    Java
    String test1 = "1,5";
    String test2 = "1.5";
    double parseTest1 = Double.parseDouble(test1); // FEHLER !
    double parseTest2 = Double.parseDouble(test2); // 1,5

    Heißt du muss das Komma durch einen Punkt ersetzt, bevor du in ein double parst.
    Und bei der String-Ausgabe kannst du das wieder umdrehen -> Punkt durch Komma ersetzten.
    Um das ganze passend zu ersetzen kannst du auf den String die replace-methode nutzen.

    Hi, es gibt eine Funktion die nennt sich evaluateJavascript.
    Das ganze sieht dann in etwas so aus: webView.evaluateJavascript("document.getElementById('main-carousel2').style.display='none';",null);


    Achtung: du hast auch noch einen JS-Fehler: document.getElementsById('main-carousel2').style.display='none';} -> muss zu -> document.getElementById('main-carousel2').style.display='none';