Android crosswalk view
CrosswalkView
CrossWalkview is one of CrossWalk Project, and Chrome base WebView.
Android Get Started
Download library project from Website.
The core part is “xwalk_core_library”
And add this project to dependencies of your project.
API : Reference
Simple Code
Layout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="jp.co.rakuten.rewards.crosswalksample.MainActivity" > <LinearLayout android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > </LinearLayout> </RelativeLayout>
Codes
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Add XWalkView commentsLayout = (LinearLayout) findViewById(R.id.main); xWalkWebView = new XWalkView(this, this); xWalkWebView.setResourceClient(new XWalkResponceClient(xWalkWebView)); commentsLayout.addView(xWalkWebView); }
Basic Features
- load
- back
- forward
- reload
- stop
load
Use load method
xWalkWebView.load("http://www.rakuten.com.sg", null);
back
xWalkWebView.getNavigationHistory().navigate(Direction.BACKWARD, 1);
xWalkWebView.getNavigationHistory().navigate(Direction.FORWARD, 1);
reload
xWalkWebView.reload();
stop
xWalkWebView.stopLoading();
Event Listeners
Extends XWalkResourceClient
class XWalkResponceClient extends XWalkResourceClient { public XWalkResponceClient(XWalkView view) { super(view); } @Override public void onLoadFinished(XWalkView view, String url) { super.onLoadFinished(view, url); // Finish loading } @Override public void onLoadStarted(XWalkView view, String url) { super.onLoadStarted(view, url); } @Override public void onProgressChanged(XWalkView view, int progressInPercent) { super.onProgressChanged(view, progressInPercent); } @Override public void onReceivedLoadError(XWalkView view, int errorCode, String description, String failingUrl) { super.onReceivedLoadError(view, errorCode, description, failingUrl); } @Override public void onReceivedSslError(XWalkView view, ValueCallback<Boolean> callback, SslError error) { // SSL Should use default handler super.onReceivedSslError(view, callback, error); } @Override public WebResourceResponse shouldInterceptLoadRequest(XWalkView view, String url) { return super.shouldInterceptLoadRequest(view, url); } @Override public boolean shouldOverrideUrlLoading(XWalkView view, String url) { return super.shouldOverrideUrlLoading(view, url); } }
Known issues
- Locale? When accessing Facebook, Rakuten, signin page, always open English page(not local language page)
- It doesn’t have Download Feature(need to implement by ourselves)
- We have to call onReceivedSslError(if not call, the user tried to access twitter.jp which has invalid ssl certificate)