Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.
Γεια σας παιδιά!
Έχω τρεις εφαρμογές φτιαγμένες σε android webview και χθες παρατήρησα, ότι μετά το update του Webview από το playstore έγιναν clear όλες οι localstorage variables που χρησιμοποιούσα. 
 

Μήπως δεν φταίει το update, αλλά έχω κάποια έλλειψη στον κώδικά μου;

 

Ορίστε ο κώδικας:

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


        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);


        myWebView = (WebView) this.findViewById(R.id.webView);


        myWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                //Required functionality here
                return super.onJsAlert(view, url, message, result);
            }
        });


        myWebView.setWebViewClient(new WebViewClient() {


            @SuppressWarnings("deprecation")
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (!url.contains("file")) {
                    if (url.startsWith("mailto:")) {
                        String body = "blah blah blah:\n\n";
                        //Intent mail = new Intent(Intent.ACTION_SEND);
                        Intent mail = new Intent(Intent.ACTION_SENDTO);
                        //mail.setType("application/octet-stream");
                        //mail.setType("message/rfc822");
                        mail.setData(Uri.parse("mailto:")); // only email apps should handle this
                        mail.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
                        mail.putExtra(Intent.EXTRA_SUBJECT, "Someapp [app message]");
                        mail.putExtra(Intent.EXTRA_TEXT, body);
                        startActivity(mail);
                        return true;
                    } else {
                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                        startActivity(intent);
                        return true;
                    }
                }
                return false;
            }


            @TargetApi(Build.VERSION_CODES.N)
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                Uri uri = request.getUrl();
                String url = uri.toString();
                if (!url.contains("file")) {
                    if (url.startsWith("mailto:")) {
                        String body = "blah blah blah:\n\n";
                        //Intent mail = new Intent(Intent.ACTION_SEND);
                        Intent mail = new Intent(Intent.ACTION_SENDTO);
                        //mail.setType("application/octet-stream");
                        //mail.setType("message/rfc822");
                        mail.setData(Uri.parse("mailto:")); // only email apps should handle this
                        mail.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
                        mail.putExtra(Intent.EXTRA_SUBJECT, "someapp [app message]");
                        mail.putExtra(Intent.EXTRA_TEXT, body);
                        startActivity(mail);
                        return true;
                    } else {
                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                        startActivity(intent);
                        return true;
                    }
                }
                return false;
            }
        });


        WebSettings settings = myWebView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setDomStorageEnabled(true);
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
            settings.setDatabasePath("/data/data/" + myWebView.getContext().getPackageName() + "/databases/");
        }
        if(Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1 && Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
            settings.setAllowUniversalAccessFromFileURLs(true);
        }
        myWebView.setVerticalScrollBarEnabled(false);
        myWebView.setHorizontalScrollBarEnabled(false);
        myWebView.loadUrl("file:///android_asset/www/index.html");
    }

Το targetSdkVersion είναι 24.

 

Σας παρακαλώ μην ακούσω λύσεις να μετατρέψω την εφαρμογή σε native γιατί χαζός δεν είμαι, γνωρίζω ότι είναι η βέλτιστη λύση. 
 
Δημοσ.

Τελικά μάλλον είναι πρόβλημα του webview γενικότερα αυτό, καθώς έψαχνα ώρες ολόκληρες και λύση δε βρέθηκε.

 

Ωστόσο, δημιούργησα ένα JavascriptInterface από τη μεριά της Java και πλέον αποθηκεύονται με native τρόπο τα δεδομένα. 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...