GVKun编程网logo

android-保持本地存储从内部webview移动到人行横道(android本地保存数据)

18

在这篇文章中,我们将带领您了解android-保持本地存储从内部webview移动到人行横道的全貌,包括android本地保存数据的相关情况。同时,我们还将为您介绍有关androidlistview的

在这篇文章中,我们将带领您了解android-保持本地存储从内部webview移动到人行横道的全貌,包括android本地保存数据的相关情况。同时,我们还将为您介绍有关android listview的item中有webview,但是点击webview会没有反应?、Android ViewFlipper滑动切换webview,webview里的网页布局变得混乱、Android WebView + AJAX本地文件、android webview js 交互,响应 webview 图片的响应事件的知识,以帮助您更好地理解这个主题。

本文目录一览:

android-保持本地存储从内部webview移动到人行横道(android本地保存数据)

android-保持本地存储从内部webview移动到人行横道(android本地保存数据)

我已经开发了Cordova应用程序,该应用程序已在约100个平板电脑上发布.现在我们要使用人行横道的力量.一切正常,除非我们在更新时丢失本地存储信息.

我已经尽力搜寻了答案,但找不到任何信息,该如何将信息从内部Webview迁移到人行横道Webview.

所以问题是:在更新为人行横道时如何保持本地存储? (或者我如何访问以前版本的本地存储?)

已发布应用程序的Cordova版本:3.6.3

更新时:
科尔多瓦:5.1.1
人行横道:cordova-plugin-crosswalk-webview 1.2.0(https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview)

亲切的问候,

耶罗恩

解决方法:

我们通过使用cordova-plugin-local-storage-retrieval进行了一些更改来解决了该问题.您可以在这里找到我们的叉子:https://github.com/munisense/cordova-plugin-local-storage-retrieval

android listview的item中有webview,但是点击webview会没有反应?

android listview的item中有webview,但是点击webview会没有反应?

listview的item中嵌套有webview,给listview设置了onclickItem的点击事件,但是当点到webview的位置时没有响应,其他位置却可以,应该怎么设置才能在点到webview的位置时也有响应?

Android ViewFlipper滑动切换webview,webview里的网页布局变得混乱

Android ViewFlipper滑动切换webview,webview里的网页布局变得混乱

@红猎人 你好,想跟你请教个问题:师兄啊急求一个问题。

网页是自己写的,用div又嵌套了几个网页。若比较快的滑到该屏不出现该问题,若等一会儿滑到该屏就有此问题,请问该怎么解决。

 

Android WebView + AJAX本地文件

Android WebView + AJAX本地文件

我有一个android webview加载我在本地拥有资产的网站。我不是自己构建的,对标记,js等的控制很少。

问题:网站的某些部分使用jquery $ .ajax-
gets获取HTML以模态显示,并且我认为我遇到了跨域问题(如果我在台式机上本地测试该网站,则会得到相同的来源-警告,我的来源是“
null”),即由于某种原因,本地js无法ajax获取Assets文件夹中的其他本地文件,因为底层浏览器认为这些来自不同的来源。我已经阅读了有关该内容的所有内容,但似乎没有任何区别。在LogCat中未收到任何错误或警告。

它在Nexus 7上运行,文件位于资产文件夹(file:///android_asset)中。其他一切都工作正常,但是使用ajax GET却没有运气。

从清单中:

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

相关的网页视图代码:

mWebView = (WebView) findViewById(R.id.webview);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setSupportMultipleWindows(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebView.setHorizontalScrollBarEnabled(false);
mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.getSettings().setAllowFileAccessFromFileURLs(true);
mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
mWebView.addJavascriptInterface(this,"android");
if (savedInstanceState != null) {  
    mWebView.restoreState(savedInstanceState);
} else {          
    mWebView.loadUrl("file:///android_asset/site/index.html");
}

这是相关的js:

var load = function ( source,callback,dontShowLoader ) {
if( !dontShowLoader ) {
    loading( 'show' );
}
$.ajax({
    url: source,type: 'GET',data: {
        campaign: true
    },success: function ( data ) {
        var $data = $(data);
        loading( 'hide' );
        $data.data( 'url',source );
        callback( $(data) );
    }
});
};

我在这里想念什么吗?真的没有办法对本地文件内容执行Ajax GET吗?请注意,我 只有
本地文件可以使用,正常使用情况是使用该应用程序时平板电脑未连接到互联网,因此任何外部呼叫都无法进行。

android webview js 交互,响应 webview 图片的响应事件

android webview js 交互,响应 webview 图片的响应事件

方案思路,

1. 在点击图片的时候调用本地的 java 方法并给出响应的图片地址

2. 本地获得图片地址后,开启一个遮罩 activity 进行显示和处理


第二步的实现很容易实现,关键是第一步的实现,在网页中点击图片不会调用本地的 java 代码。那么我们需要给这个点击事件加上相应的 js 函数,让点击事件调用的 js 函数来调用我们提前准备好的 java 函数,等我们捕获到图片的 url 剩下的就好处理了。

关键点就是给普通的 html 注入我们的 js 函数,让图片能够响应点击并调用 js 函数,在通过 js 函数来调用我们的 java 函数。听起来好像有点绕,不过也不难,下面我们用代码实现下


对 java 和 js 交互还不熟悉的同学,请参照前面的文章

http://blog.csdn.net/wangtingshuai/article/details/8631835


这次实例的主要功能:点击图片在新的 activity 中展示,对图片能够进行手势操作,包括双指缩放等

效果图


加载 webview 的 activity 代码  


[java] view plaincopy

  1. package wst.webview;  

  2.   

  3. import android.annotation.SuppressLint;  

  4. import android.app.Activity;  

  5. import android.content.Context;  

  6. import android.content.Intent;  

  7. import android.graphics.Bitmap;  

  8. import android.os.Bundle;  

  9. import android.webkit.WebView;  

  10. import android.webkit.WebViewClient;  

  11.   

  12. @SuppressLint("SetJavaScriptEnabled")  

  13. public class MainActivity extends Activity {  

  14.   

  15.     private WebView contentWebView = null;  

  16.   

  17.     @SuppressLint("SetJavaScriptEnabled")  

  18.     @Override  

  19.     public void onCreate(Bundle savedInstanceState) {  

  20.         super.onCreate(savedInstanceState);  

  21.         setContentView(R.layout.main);  

  22.         contentWebView = (WebView) findViewById(R.id.webview);  

  23.         // 启用 javascript  

  24.         contentWebView.getSettings().setJavaScriptEnabled(true);  

  25.         // 随便找了个带图片的网站  

  26.         contentWebView.loadUrl("http://www.weim.me/12408.html");  

  27.         // 添加 js 交互接口类,并起别名 imagelistner  

  28.         contentWebView.addJavascriptInterface(new JavascriptInterface(this), "imagelistner");  

  29.         contentWebView.setWebViewClient(new MyWebViewClient());  

  30.   

  31.     }  

  32.   

  33.     // 注入 js 函数监听  

  34.     private void addImageClickListner() {  

  35.         // 这段 js 函数的功能就是,遍历所有的 img 几点,并添加 onclick 函数,函数的功能是在图片点击的时候调用本地 java 接口并传递 url 过去  

  36.         contentWebView.loadUrl("javascript:(function(){" +  

  37.         "var objs = document.getElementsByTagName(\"img\"); " +   

  38.                 "for(var i=0;i<objs.length;i++)  " +   

  39.         "{"  

  40.                 + "    objs[i].onclick=function()  " +   

  41.         "    {  "   

  42.                 + "        window.imagelistner.openImage(this.src);  " +   

  43.         "    }  " +   

  44.         "}" +   

  45.         "})()");  

  46.     }  

  47.   

  48.     // js 通信接口  

  49.     public class JavascriptInterface {  

  50.   

  51.         private Context context;  

  52.   

  53.         public JavascriptInterface(Context context) {  

  54.             this.context = context;  

  55.         }  

  56.   

  57.         public void openImage(String img) {  

  58.             System.out.println(img);  

  59.             //  

  60.             Intent intent = new Intent();  

  61.             intent.putExtra("image", img);  

  62.             intent.setClass(context, ShowWebImageActivity.class);  

  63.             context.startActivity(intent);  

  64.             System.out.println(img);  

  65.         }  

  66.     }  

  67.   

  68.     // 监听  

  69.     private class MyWebViewClient extends WebViewClient {  

  70.         @Override  

  71.         public boolean shouldOverrideUrlLoading(WebView view, String url) {  

  72.   

  73.             return super.shouldOverrideUrlLoading(view, url);  

  74.         }  

  75.   

  76.         @Override  

  77.         public void onPageFinished(WebView view, String url) {  

  78.   

  79.             view.getSettings().setJavaScriptEnabled(true);  

  80.   

  81.             super.onPageFinished(view, url);  

  82.             // html 加载完成之后,添加监听图片的点击 js 函数  

  83.             addImageClickListner();  

  84.   

  85.         }  

  86.   

  87.         @Override  

  88.         public void onPageStarted(WebView view, String url, Bitmap favicon) {  

  89.             view.getSettings().setJavaScriptEnabled(true);  

  90.   

  91.             super.onPageStarted(view, url, favicon);  

  92.         }  

  93.   

  94.         @Override  

  95.         public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {  

  96.   

  97.             super.onReceivedError(view, errorCode, description, failingUrl);  

  98.   

  99.         }  

  100.     }  

  101.   

  102. }  


展示图片的 activity 代码


[java] view plaincopy

  1. package wst.webview;  

  2.   

  3. import java.io.IOException;  

  4. import java.io.InputStream;  

  5. import java.net.URL;  

  6.   

  7. import android.app.Activity;  

  8. import android.graphics.drawable.BitmapDrawable;  

  9. import android.graphics.drawable.Drawable;  

  10. import android.os.Bundle;  

  11. import android.widget.TextView;  

  12.   

  13. public class ShowWebImageActivity extends Activity {  

  14.     private TextView imageTextView = null;  

  15.     private String imagePath = null;  

  16.     private ZoomableImageView imageView = null;  

  17.   

  18.     @Override  

  19.     protected void onCreate(Bundle savedInstanceState) {  

  20.         super.onCreate(savedInstanceState);  

  21.         setContentView(R.layout.show_webimage);  

  22.         this.imagePath = getIntent().getStringExtra("image");  

  23.   

  24.         this.imageTextView = (TextView) findViewById(R.id.show_webimage_imagepath_textview);  

  25.         imageTextView.setText(this.imagePath);  

  26.         imageView = (ZoomableImageView) findViewById(R.id.show_webimage_imageview);  

  27.   

  28.         try {  

  29.             imageView.setImageBitmap(((BitmapDrawable) ShowWebImageActivity.loadImageFromUrl(this.imagePath)).getBitmap());  

  30.         } catch (IOException e) {  

  31.             e.printStackTrace();  

  32.         }  

  33.     }  

  34.   

  35.     public static Drawable loadImageFromUrl(String url) throws IOException {  

  36.   

  37.         URL m = new URL(url);  

  38.         InputStream i = (InputStream) m.getContent();  

  39.         Drawable d = Drawable.createFromStream(i, "src");  

  40.         return d;  

  41.     }  

  42. }  



图片布局文件 


[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  

  3.     android:layout_width="fill_parent"  

  4.     android:layout_height="fill_parent"  

  5.     android:orientation="vertical" >  

  6.   

  7.     <!-- TODO 默认占位图 -->  

  8.   

  9.     <wst.webview.ZoomableImageView  

  10.         android:id="@+id/show_webimage_imageview"  

  11.         android:layout_width="fill_parent"  

  12.         android:layout_height="fill_parent"  

  13.         android:scaleType="matrix"  

  14.         android:src="@drawable/icon" />  

  15.   

  16.     <TextView  

  17.         android:id="@+id/show_webimage_imagepath_textview"  

  18.         android:layout_width="fill_parent"  

  19.         android:layout_height="wrap_content"  

  20.         android:gravity="center"  

  21.         android:textColor="#ffff0000" />  

  22.   

  23. </LinearLayout> 



今天关于android-保持本地存储从内部webview移动到人行横道android本地保存数据的分享就到这里,希望大家有所收获,若想了解更多关于android listview的item中有webview,但是点击webview会没有反应?、Android ViewFlipper滑动切换webview,webview里的网页布局变得混乱、Android WebView + AJAX本地文件、android webview js 交互,响应 webview 图片的响应事件等相关知识,可以在本站进行查询。

本文标签: