Android Open Source - fh-android-sdk F H O Auth Web View






From Project

Back to project page fh-android-sdk.

License

The source code is released under:

Copyright (c) 2014 FeedHenry Ltd, All Rights Reserved. Please refer to your contract with FeedHenry for the software license agreement. If you do not have a contract, you do not have a license to use...

If you think the Android project fh-android-sdk listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.feedhenry.sdk.oauth;
/*from  w w  w . j a va 2s  . com*/
import com.feedhenry.sdk.utils.FHLog;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * Construct a WebView window and load a url request. Broadcast url changes event to anyone who's interested.
 *
 */
public class FHOAuthWebView {

  private WebView mWebView;
  private Bundle mSettings = null;
  private Activity mContext = null;
  private ViewGroup mMainLayout = null;
  private String mFinishedUrl = "NOT_FINISHED";
  private boolean mFinished = false;
  private static final String LOG_TAG = "com.feedhenry.sdk.oauth.FHOAuthWebView";
  
  public static final String BROADCAST_ACTION_FILTER = "com.feedhenry.sdk.oauth.urlChanged";
  
  public FHOAuthWebView(Activity pContext, Bundle pSettings){
    mContext = pContext;
    mSettings = pSettings;
  }
  
  public void onCreate(){
    String startUrl = mSettings.getString("url");
    String title = mSettings.getString("title");
    mMainLayout = null;
    mMainLayout = new LinearLayout(this.mContext);
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT, 0.0F);
    mMainLayout.setLayoutParams(lp);
    ((LinearLayout) mMainLayout).setGravity(Gravity.CENTER_VERTICAL);
    ((LinearLayout) mMainLayout).setOrientation(LinearLayout.VERTICAL);
   
    mWebView = new WebView(this.mContext);

    WebSettings settings = mWebView.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setBuiltInZoomControls(true);
    settings.setJavaScriptCanOpenWindowsAutomatically(true);
    
    mWebView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT, 1.0F));
    
    mWebView.setWebViewClient(new WebViewClient() {

      public boolean shouldOverrideUrlLoading(WebView view, String url) {
        FHLog.d(LOG_TAG, "going to load url " + url);
        if (url.contains("http")) {
          return false;
        }
        return true;
      }

      public void onPageStarted(WebView view, String url, Bitmap favicon) {
        FHLog.d(LOG_TAG, "start to load " + url);
        if(url.indexOf("status=complete") > -1){
          mFinishedUrl = url;
          mFinished = true;
        }
      }

      public void onPageFinished(WebView view, String url) {
        FHLog.d(LOG_TAG, "finish loading " + url);
        if(mFinished && !"about:blank".equals(url)){
          close();
        }
      }

      @Override
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        FHLog.d(LOG_TAG, "error: " + description + "url: " + failingUrl);
      }
    });
    
    mWebView.requestFocusFromTouch();
    mWebView.setVisibility(View.VISIBLE);
    LinearLayout barlayout = new LinearLayout(this.mContext);
    LinearLayout.LayoutParams blp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, 0.0F);
    barlayout.setLayoutParams(blp);
    barlayout.setGravity(Gravity.CENTER_VERTICAL);

    initHeaderBar(barlayout, title);
    
    mMainLayout.addView(barlayout);
    mMainLayout.setBackgroundColor(Color.TRANSPARENT);
    mMainLayout.setBackgroundResource(0);
    mMainLayout.addView(this.mWebView);
    
    mWebView.loadUrl(startUrl);
  }
  
  private void initHeaderBar(LinearLayout barlayout, String title) {
    barlayout.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
    barlayout.setBackgroundColor(Color.BLACK);

    TextView text = new TextView(this.mContext);
    if (!title.equals("undefined")){
      text.setText(title);
    }
    text.setTextColor(Color.WHITE);
    text.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
    text.setTextSize(20);
    text.setTypeface(null, 1);
    text.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1.0F));
    
    barlayout.addView(text);
  }
  
  public void close() {
    mWebView.stopLoading();
    Intent i = new Intent();
    i.setAction(BROADCAST_ACTION_FILTER);
    i.putExtra("url", mFinishedUrl);
    mContext.sendBroadcast(i);
    mContext.finish();
  }
  
  public ViewGroup getView(){
    return mMainLayout;
  }
  
  public void destroy(){
    if(null != mWebView){
      mWebView.destroy();
    }
  }

}




Java Source Code List

com.feedhenry.fhandroidexampleapp.FHActActivity.java
com.feedhenry.fhandroidexampleapp.FHAndroidExampleActivity.java
com.feedhenry.fhandroidexampleapp.FHAuthActivity.java
com.feedhenry.fhandroidexampleapp.FHLoginActivity.java
com.feedhenry.fhandroidexampleapp.FHSyncActivity.java
com.feedhenry.fhandroidexampleapp.FhUtil.java
com.feedhenry.fhandroidexampleapp.ItemDetailsActivity.java
com.feedhenry.fhandroidexampleapp.SyncCollisionResolveActivity.java
com.feedhenry.fhandroidexampleapp.SyncCollisionsListActivity.java
com.feedhenry.sdk.CloudProps.java
com.feedhenry.sdk.FHActCallback.java
com.feedhenry.sdk.FHAct.java
com.feedhenry.sdk.FHHttpClient.java
com.feedhenry.sdk.FHRemote.java
com.feedhenry.sdk.FHResponse.java
com.feedhenry.sdk.FH.java
com.feedhenry.sdk.api.FHActRequest.java
com.feedhenry.sdk.api.FHAuthRequest.java
com.feedhenry.sdk.api.FHCloudRequest.java
com.feedhenry.sdk.api.FHInitializeRequest.java
com.feedhenry.sdk.exceptions.FHInvalidActionException.java
com.feedhenry.sdk.exceptions.FHNotReadyException.java
com.feedhenry.sdk.oauth.FHOAuthIntent.java
com.feedhenry.sdk.oauth.FHOAuthWebView.java
com.feedhenry.sdk.sync.FHSyncClient.java
com.feedhenry.sdk.sync.FHSyncConfig.java
com.feedhenry.sdk.sync.FHSyncDataRecord.java
com.feedhenry.sdk.sync.FHSyncDataset.java
com.feedhenry.sdk.sync.FHSyncListener.java
com.feedhenry.sdk.sync.FHSyncNotificationHandler.java
com.feedhenry.sdk.sync.FHSyncPendingRecord.java
com.feedhenry.sdk.sync.FHSyncUtils.java
com.feedhenry.sdk.sync.NotificationMessage.java
com.feedhenry.sdk.utils.FHLog.java
com.feedhenry.starter.FHStarterActivity.java
com.loopj.android.http.AsyncHttpClient.java
com.loopj.android.http.AsyncHttpRequest.java
com.loopj.android.http.AsyncHttpResponseHandler.java
com.loopj.android.http.Base64DataException.java
com.loopj.android.http.Base64OutputStream.java
com.loopj.android.http.Base64.java
com.loopj.android.http.BaseJsonHttpResponseHandler.java
com.loopj.android.http.BinaryHttpResponseHandler.java
com.loopj.android.http.DataAsyncHttpResponseHandler.java
com.loopj.android.http.FileAsyncHttpResponseHandler.java
com.loopj.android.http.JsonHttpResponseHandler.java
com.loopj.android.http.JsonStreamerEntity.java
com.loopj.android.http.MyRedirectHandler.java
com.loopj.android.http.MySSLSocketFactory.java
com.loopj.android.http.PersistentCookieStore.java
com.loopj.android.http.PreemtiveAuthorizationHttpRequestInterceptor.java
com.loopj.android.http.RangeFileAsyncHttpResponseHandler.java
com.loopj.android.http.RequestHandle.java
com.loopj.android.http.RequestParams.java
com.loopj.android.http.ResponseHandlerInterface.java
com.loopj.android.http.RetryHandler.java
com.loopj.android.http.SerializableCookie.java
com.loopj.android.http.SimpleMultipartEntity.java
com.loopj.android.http.SyncHttpClient.java
com.loopj.android.http.TextHttpResponseHandler.java
org.json.fh.CDL.java
org.json.fh.CookieList.java
org.json.fh.Cookie.java
org.json.fh.HTTPTokener.java
org.json.fh.HTTP.java
org.json.fh.JSONArray.java
org.json.fh.JSONException.java
org.json.fh.JSONObject.java
org.json.fh.JSONString.java
org.json.fh.JSONStringer.java
org.json.fh.JSONTokener.java
org.json.fh.JSONWriter.java
org.json.fh.XMLTokener.java
org.json.fh.XML.java