rafinos Δημοσ. 22 Μαρτίου 2017 Δημοσ. 22 Μαρτίου 2017 Γεια σας παιδιά! Έχω τρεις εφαρμογές φτιαγμένες σε 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 γιατί χαζός δεν είμαι, γνωρίζω ότι είναι η βέλτιστη λύση.
rafinos Δημοσ. 23 Μαρτίου 2017 Μέλος Δημοσ. 23 Μαρτίου 2017 Τελικά μάλλον είναι πρόβλημα του webview γενικότερα αυτό, καθώς έψαχνα ώρες ολόκληρες και λύση δε βρέθηκε. Ωστόσο, δημιούργησα ένα JavascriptInterface από τη μεριά της Java και πλέον αποθηκεύονται με native τρόπο τα δεδομένα.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα