Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.infinum.novalac;
- import com.google.android.gcm.GCMRegistrar;
- import com.google.android.gms.common.ConnectionResult;
- import com.google.android.gms.common.Scopes;
- import com.google.android.gms.common.api.GoogleApiClient;
- import com.google.android.gms.common.api.Scope;
- import com.google.android.gms.plus.Plus;
- import com.google.android.gms.plus.PlusShare;
- import com.google.android.gms.plus.model.people.Person;
- import com.google.gson.Gson;
- import com.google.gson.JsonObject;
- import com.google.gson.JsonParser;
- import com.facebook.FacebookException;
- import com.facebook.Request;
- import com.facebook.Session;
- import com.facebook.SessionState;
- import com.facebook.UiLifecycleHelper;
- import com.facebook.model.GraphUser;
- import com.facebook.widget.FacebookDialog;
- import com.facebook.widget.FacebookDialog.Callback;
- import com.facebook.widget.FacebookDialog.PendingCall;
- import com.facebook.widget.WebDialog;
- import com.facebook.widget.WebDialog.OnCompleteListener;
- import com.infinum.novalac.api.BaseCallback;
- import com.infinum.novalac.api.NovalacService;
- import com.infinum.novalac.api.models.AuthTokenWrapper;
- import com.infinum.novalac.api.models.DocumentResponseWrapper;
- import com.infinum.novalac.api.models.EmailWrapper;
- import com.infinum.novalac.api.models.MessageResponse;
- import com.infinum.novalac.api.models.ShareData;
- import com.infinum.novalac.api.models.SocialUser;
- import com.infinum.novalac.api.models.SocialUserWrapper;
- import com.infinum.novalac.api.models.UserWrapper;
- import com.infinum.novalac.custom.deserializer.BannersCustomDeserializer;
- import com.infinum.novalac.helpers.TwitterHelper;
- import com.infinum.novalac.util.LoginListener;
- import com.infinum.novalac.util.NovalacLogger;
- import com.infinum.novalac.util.NovalacUtil;
- import com.nostra13.socialsharing.facebook.FacebookFacade;
- import org.apache.http.HttpResponse;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.methods.HttpGet;
- import org.apache.http.impl.client.DefaultHttpClient;
- import org.apache.http.util.EntityUtils;
- import org.json.JSONException;
- import org.json.JSONObject;
- import android.annotation.SuppressLint;
- import android.app.Activity;
- import android.app.AlarmManager;
- import android.app.AlertDialog;
- import android.app.AlertDialog.Builder;
- import android.app.DatePickerDialog;
- import android.app.DatePickerDialog.OnDateSetListener;
- import android.app.Dialog;
- import android.app.NotificationManager;
- import android.app.PendingIntent;
- import android.app.ProgressDialog;
- import android.app.TimePickerDialog;
- import android.app.TimePickerDialog.OnTimeSetListener;
- import android.content.ActivityNotFoundException;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.IntentSender;
- import android.content.SharedPreferences;
- import android.content.res.Configuration;
- import android.database.Cursor;
- import android.graphics.Bitmap;
- import android.net.ConnectivityManager;
- import android.net.NetworkInfo;
- import android.net.Uri;
- import android.net.http.SslError;
- import android.os.AsyncTask;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Environment;
- import android.os.Handler;
- import android.os.Message;
- import android.provider.MediaStore;
- import android.util.Base64;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.view.LayoutInflater;
- import android.view.Menu;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.Window;
- import android.view.WindowManager;
- import android.webkit.HttpAuthHandler;
- import android.webkit.JavascriptInterface;
- import android.webkit.SslErrorHandler;
- import android.webkit.WebChromeClient;
- import android.webkit.WebSettings.RenderPriority;
- import android.webkit.WebStorage.QuotaUpdater;
- import android.webkit.WebView;
- import android.webkit.WebViewClient;
- import android.widget.Button;
- import android.widget.DatePicker;
- import android.widget.EditText;
- import android.widget.LinearLayout;
- import android.widget.TimePicker;
- import android.widget.Toast;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.UnsupportedEncodingException;
- import java.lang.reflect.InvocationTargetException;
- import java.net.URLDecoder;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Collection;
- import java.util.Date;
- import java.util.Locale;
- import eu.janmuller.android.simplecropimage.CropImage;
- import hr.infinum.data.core.DataContainer;
- import hr.infinum.data.core.Format;
- import hr.infinum.data.core.Store;
- import hr.infinum.data.errors.Error;
- import hr.infinum.data.listeners.LoadListener;
- import hr.infinum.data.serialization.QueryStringSerializer;
- import hr.infinum.data.typecasting.DefaultTypeCaster;
- import hr.infinum.data.typecasting.TypeCaster;
- import hr.infinum.io.Loggy;
- import hr.infinum.io.RestClient.HttpMethod;
- import hr.infinum.novalac.generated.Sources;
- import hr.infinum.novalac.generated.params.BannersParams;
- import hr.infinum.novalac.generated.params.PushRegisterParams;
- import hr.infinum.novalac.generated.params.PushUnregisterParams;
- import hr.infinum.novalac.generated.sources.BannersSource;
- import hr.infinum.novalac.generated.sources.ExportDataSource;
- import hr.infinum.novalac.generated.sources.PushRegisterSource;
- import hr.infinum.novalac.generated.sources.PushUnregisterSource;
- import hr.infinum.novalac.models.Banner;
- import hr.infinum.novalac.models.StatusResponse;
- import retrofit.client.Response;
- import twitter4j.Status;
- import twitter4j.StatusUpdate;
- import twitter4j.Twitter;
- import twitter4j.TwitterException;
- import twitter4j.TwitterFactory;
- import twitter4j.auth.AccessToken;
- import twitter4j.auth.RequestToken;
- import twitter4j.conf.ConfigurationBuilder;
- //import net.simonvt.app.DatePickerDialog;
- //import net.simonvt.app.DatePickerDialog.OnDateSetListener;
- public class HomeActivity extends Activity implements OnDateSetListener,
- LoginListener, GoogleApiClient.ConnectionCallbacks,
- GoogleApiClient.OnConnectionFailedListener {
- private static final int REQUEST_TAKE_A_PHOTO = 100;
- private static final int REQUEST_CHOOSE_FROM_GALLERY = 101;
- private static final int REQUEST_CROP_IMAGE_FROM_GALLERY = 103;
- private static final int GOOGLE_PLUS_REQUEST_CODE = 49404;
- private static final int REQUEST_AUTHORIZATION = 10302;
- private static WebView webView;
- private Button btnLoad;
- private Button btnLoad2;
- private EditText etURL;
- private String URL = "http://www.infinum.hr";
- private NovalacPreferences prefs;
- private String URLstub = "javascript:NativeBridge.callback(\"%s\", \"%s\")";
- private String URLstubWithResponse = "javascript:NativeBridge.callback(\"%s\", %s)";
- public static final String URL_DATEPICKER = "native://datepicker";
- public static final String URL_FILEPICKER = "native://photopicker";
- public static final String URL_EXTERNAL = "native://external";
- public static final String URL_LANGUAGE = "native://language";
- public static final String URL_BANNERS = "native://getBanners";
- public static final String URL_CLOSE = "native://close";
- public static final String URL_TIMEPICKER = "native://timepicker";
- public static final String URL_REMINDER = "native://reminder";
- public static final String URL_NATIVE = "native://";
- public static final String URL_PUSH_APP_LOADED = "native://app-loaded";
- public static final String URL_SHARE = "native://share";
- public static final String URL_LOADING = "native://loading";
- public static final String URL_EXPORT_ADD = "native://export-add";
- public static final String URL_EXPORT_SEND = "native://export-send";
- public static final String URL_MEASUREMENT_NOTIFICAITON = "native://measurement-notification";
- public static final String URL_SOCIAL_LOGIN = "native://social-login";
- public static final String URL_LOGIN = "native://login";
- public static final String URL_USER_CREATE = "native://user-create";
- public static final String URL_IMPORT_USER_DATA = "native://import-user-data";
- public static final String URL_LOAD_USER_DATA = "native://load-user-data";
- public static final String URL_RESET_PASSWORD = "native://reset-password";
- public static final String STUB_DATEPICKER = "datepicker";
- public static final String STUB_FILEPICKER = "photopicker";
- public static final String STUB_BANNERS = "getBanners";
- public static final String STUB_TIMEPICKER = "timepicker";
- public static final String STUB_REMINDER = "reminder/";
- public static final String STUB_CREATE = "create";
- public static final String STUB_UPDATE = "update";
- public static final String STUB_DESTROY = "destroy";
- public static final String STUB_SHARE = "share";
- public static final String STUB_EXPORT_SEND = "export-send";
- public static final String STUB_FACEBOOK = "facebook";
- public static final String STUB_TWITTER = "twitter";
- public static final String STUB_GOOGLE = "gplus";
- public static final String STUB_SOCIAL_LOGIN = "social-login";
- public static final String STUB_LOGIN = "login";
- public static final String STUB_USER_CREATE = "user-create";
- public static final String STUB_EXPORT_USER_ADD = "export-user-send";
- public static final String STUB_IMPORT_USER_DATA = "import-user-data";
- public static final String STUB_ANDROID_CHUNK_RECEIVER = "androidChunkedPartialDataReceiver";
- public static final String STUB_RESET_PASSWORD = "reset-password";
- public static final String STUB_SHARE_MY_FIRST = "share-my-first-send";
- private static final int CROP = 14;
- private static final String CHILD_ID = "child_id";
- private DatePickerDialog dateDialog;
- private String cancel = "";
- private String photo = "";
- private String camera = "";
- private boolean fromPush = false;
- private Bundle b;
- private String content;
- private String custom;
- private Uri currentPhotoUri;
- private boolean appLoaded = false;
- private String urlText;
- private String urlUrl;
- private ProgressDialog progressDialog;
- private Dialog customProggresDialog;
- private WebView twitterWebView;
- private LinearLayout twitterWebViewWrapper;
- private boolean shouldPostPhotoAfterTwitterLogin = false;
- /* Client used to interact with Google APIs. */
- private GoogleApiClient mGoogleApiClient;
- /* Is there a ConnectionResult resolution in progress? */
- private boolean mIsResolving = false;
- /* Should we automatically resolve ConnectionResults when possible? */
- private boolean mShouldResolve = false;
- FacebookFacade facebookFacade;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- TypeCaster.setGlobal(new DefaultTypeCaster());
- prefs = new NovalacPreferences(this);
- NovalacApplication.setHomeActivity(this);
- Loggy.showAll();
- // Build GoogleApiClient with access to basic profile
- mGoogleApiClient = new GoogleApiClient.Builder(this)
- .addConnectionCallbacks(this)
- .addOnConnectionFailedListener(this)
- .addApi(Plus.API)
- .addScope(new Scope(Scopes.PLUS_LOGIN))
- .addScope(new Scope(Scopes.PLUS_ME))
- .build();
- uiHelper = new UiLifecycleHelper(this, callback);
- uiHelper.onCreate(savedInstanceState);
- // if (!hasInternet(this)) {
- // Toast.makeText(this, "NO internet -- need translation",
- // Toast.LENGTH_LONG).show();
- // finish();
- // return;
- // }
- if (getIntent() != null && getIntent().getExtras() != null) {
- fromPush = true;
- content = getIntent().getExtras().getString("display_text");
- custom = getIntent().getExtras().getString("custom");
- if (fromPush && appLoaded) {
- if (content != null) {
- webView.loadUrl("javascript:NativeBridge.pushNotification.alert(\""
- + content + "\")");
- } else if (custom != null) {
- try {
- JSONObject obj = new JSONObject(custom);
- urlText = obj.getString("text");
- urlUrl = obj.getString("url");
- webView.loadUrl("javascript:NativeBridge.pushNotification.urlAlert(\""
- + urlText + "\", \"" + urlUrl + "\")");
- } catch (JSONException e) {
- // TODO Auto-generated catch bloc0k
- e.printStackTrace();
- }
- // webView.loadUrl("javascript:NativeBridge.pushNotification.urlAlert("
- // + custom + ")");
- }
- }
- }
- // TODO migrate to new GCM API
- GCMRegistrar.checkDevice(getApplicationContext());
- GCMRegistrar.checkManifest(this);
- final String regId = GCMRegistrar
- .getRegistrationId(getApplicationContext());
- if (regId.equals("")) {
- GCMRegistrar.register(getApplicationContext(), "960775340051");
- } else {
- Log.v("gcm", "Already registered");
- registerLocally(regId);
- }
- if (prefs.getStoredLanguage() == null) {
- setConfigurationLanguage("sl");
- } else {
- setConfigurationLanguage(prefs.getStoredLanguage());
- }
- setContentView(R.layout.activity_home);
- int currentapiVersion = android.os.Build.VERSION.SDK_INT;
- if (currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB) {
- getWindow().setFlags(
- WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
- WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
- } else {
- }
- URL = prefs.getStoredURL();
- webView = (WebView) findViewById(R.id.webview);
- // twitterWebView = (WebView) findViewById(R.id.twitter_webview);
- btnLoad = (Button) findViewById(R.id.btnLoad);
- btnLoad2 = (Button) findViewById(R.id.btnLoad2);
- etURL = (EditText) findViewById(R.id.etURL);
- etURL.setText(URL);
- twitterWebViewWrapper = (LinearLayout) findViewById(R.id.twitter_webview_wrapper);
- AsyncTask asyncTask = new AsyncTask<String, Void, String>() {
- @Override
- protected String doInBackground(String... params) {
- HttpResponse response = null;
- HttpGet httpGet = null;
- HttpClient httpClient = null;
- String responseString = "";
- try {
- if (httpClient == null) {
- httpClient = new DefaultHttpClient();
- }
- httpGet = new HttpGet((String) params[0]);
- response = httpClient.execute(httpGet);
- responseString = EntityUtils.toString(response.getEntity(),
- "UTF-8");
- } catch (IOException e) {
- e.printStackTrace();
- }
- NovalacLogger.logD(responseString);
- return responseString;
- }
- @Override
- protected void onPostExecute(String result) {
- // resumeWithLoadedUrl(result);
- // resumeWithLoadedUrl("file:///android_asset/index.html");
- // resumeWithLoadedUrl("http://192.168.1.97:8000");
- super.onPostExecute(result);
- }
- };
- String[] params = new String[1];
- // for testing purposes only
- // params[0] = "https://www.dropbox.com/s/cbtr0zwf89ee2lw/url.txt?dl=1";
- // asyncTask.execute(params);
- resumeWithLoadedUrl("file:///android_asset/index.html");
- // Calendar cal = Calendar.getInstance(Locale.getDefault());
- // dateDialog = new DatePickerDialog(HomeActivity.this,
- // HomeActivity.this,
- // cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
- // cal.get(Calendar.DAY_OF_MONTH));
- // // dateDialog.getDatePicker().setMaxDate(cal.getTimeInMillis());
- //
- // btnLoad.setOnClickListener(loadListener());
- // btnLoad2.setOnClickListener(new View.OnClickListener() {
- //
- // @Override
- // public void onClick(View v) {
- // // TODO Auto-generated method stub
- // dateDialog.show();
- // }
- // });
- //
- // if (getIntent() != null && getIntent().getExtras() != null) {
- // String babyId = getIntent().getStringExtra(ReminderService.BABY_ID);
- // String reminderId = getIntent().getStringExtra(
- // ReminderService.REMINDER);
- // if (babyId != null && reminderId != null) {
- // // URL = getUrl(this) + "#child/" + babyId + "/reminder/" +
- // // reminderId + "";
- // if (android.os.Build.VERSION.SDK_INT == 15) {
- // URL = getUrl(this);
- // webView.getSettings()
- // .setUserAgentString(
- // "{firstRun: 0, language: '"
- // + prefs.getStoredLanguage()
- // + "', fromNotif: 1, hash: '#child/"
- // + babyId + "/reminder/"
- // + reminderId + "'}");
- // //
- // webView.loadUrl("javascript:(function(){window.startingParams = {firstRun: 0, language: '"+
- // // prefs.getStoredLanguage() +
- // // "', fromNotif: 1, hash: '#child/" +babyId +"/reminder/"+
- // // reminderId+"'};})()");
- // } else {
- // URL = getUrl(this) + "&fromNotif=1" + "#child/" + babyId
- // + "/reminder/" + reminderId;
- // }
- //
- // webView.loadUrl(URL);
- // }
- // }
- //
- // /*
- // * Coming from notificaiton in status bar
- // */
- // if (getIntent() != null && getIntent().getExtras() != null
- // && getIntent().getExtras().containsKey(CHILD_ID)) {
- // String childId = getIntent().getStringExtra(CHILD_ID);
- //
- // if (childId != null) {
- // URL = getUrl(this) + "#child/" + childId;
- // // URL = getUrl(this) + "#child/" + babyId + "/reminder/" +
- // // reminderId + "";
- // if (android.os.Build.VERSION.SDK_INT == 15) {
- // webView.getSettings().setUserAgentString(
- // "{ firstRun: 0, language: '"
- // + prefs.getStoredLanguage()
- // + "', hash: '#child/" + childId + "'}");
- // //
- // webView.loadUrl("javascript:(function(){window.startingParams = { firstRun: 0, language: "+
- // // prefs.getStoredLanguage() + ", hash: '#child/"+ childId
- // // +"'};})()");
- // }
- // webView.loadUrl(URL);
- // }
- // }
- //
- }
- /**
- * Load index.html (from web or from assets)
- */
- private void resumeWithLoadedUrl(String url) {
- URL = url;
- initWebView(false);
- Calendar cal = Calendar.getInstance(Locale.getDefault());
- dateDialog = new DatePickerDialog(HomeActivity.this, HomeActivity.this,
- cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
- cal.get(Calendar.DAY_OF_MONTH));
- // dateDialog.getDatePicker().setMaxDate(cal.getTimeInMillis());
- btnLoad.setOnClickListener(loadListener());
- btnLoad2.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- dateDialog.show();
- }
- });
- if (getIntent() != null && getIntent().getExtras() != null) {
- String babyId = getIntent().getStringExtra(ReminderService.BABY_ID);
- String reminderId = getIntent().getStringExtra(
- ReminderService.REMINDER);
- if (babyId != null && reminderId != null) {
- // URL = getUrl(this) + "#child/" + babyId + "/reminder/" +
- // reminderId + "";
- if (android.os.Build.VERSION.SDK_INT == 15) {
- URL = getUrl(this);
- webView.getSettings()
- .setUserAgentString(
- "{firstRun: 0, language: '"
- + prefs.getStoredLanguage()
- + "', fromNotif: 1, hash: '#child/"
- + babyId + "/reminder/"
- + reminderId + "'}");
- // webView.loadUrl("javascript:(function(){window.startingParams = {firstRun: 0, language: '"+
- // prefs.getStoredLanguage() +
- // "', fromNotif: 1, hash: '#child/" +babyId +"/reminder/"+
- // reminderId+"'};})()");
- } else {
- URL = getUrl(this) + "&fromNotif=1" + "#child/" + babyId
- + "/reminder/" + reminderId;
- }
- webView.loadUrl(URL);
- }
- }
- /*
- * Coming from notificaiton in status bar
- */
- if (getIntent() != null && getIntent().getExtras() != null
- && getIntent().getExtras().containsKey(CHILD_ID)) {
- String childId = getIntent().getStringExtra(CHILD_ID);
- if (childId != null) {
- URL = getUrl(this) + "#child/" + childId;
- // URL = getUrl(this) + "#child/" + babyId + "/reminder/" +
- // reminderId + "";
- if (android.os.Build.VERSION.SDK_INT == 15) {
- webView.getSettings().setUserAgentString(
- "{ firstRun: 0, language: '"
- + prefs.getStoredLanguage()
- + "', hash: '#child/" + childId + "'}");
- // webView.loadUrl("javascript:(function(){window.startingParams = { firstRun: 0, language: "+
- // prefs.getStoredLanguage() + ", hash: '#child/"+ childId
- // +"'};})()");
- }
- webView.loadUrl(URL);
- }
- }
- // testLogin();
- }
- private void testLogin() {
- Handler handler = new Handler();
- handler.postDelayed(new Runnable() {
- @Override
- public void run() {
- // loginFacebook();
- // loginTwitter();
- // loginGooglePlus();
- }
- }, 5000);
- }
- private UiLifecycleHelper uiHelper;
- private void loginFacebook() {
- // FacebookLoginUtil.login(HomeActivity.this, (LoginListener)
- // HomeActivity.this);
- facebookFacade = new FacebookFacade(HomeActivity.this,
- getString(R.string.app_id));
- Session session = Session.getActiveSession();
- // check if session is already openned
- if (!session.isOpened() && !session.isClosed()) {
- session.openForRead(new Session.OpenRequest(this)
- // .setPermissions(Arrays.asList("public_profile"))
- .setCallback(callback));
- }
- // session is already active, open it
- else {
- Session.openActiveSession(this, true, callback);
- }
- }
- /**
- * Provides asynchronous notification of Session state changes.
- */
- private Session.StatusCallback callback = new Session.StatusCallback() {
- @Override
- public void call(Session session, SessionState state,
- Exception exception) {
- NovalacLogger.logD("fb callback call");
- onSessionStateChange(session, state, exception);
- }
- };
- private void onSessionStateChange(final Session session,
- SessionState state, Exception exception) {
- NovalacLogger.logD("fb on session state change");
- // session is opened, proceed to main activity
- if (state.isOpened()) {
- // postLoginUser(, provider);
- NovalacLogger.logD("state is opened");
- Request.executeMeRequestAsync(session,
- new Request.GraphUserCallback() {
- @Override
- public void onCompleted(GraphUser user,
- com.facebook.Response response) {
- NovalacLogger.logD("on completed me request");
- HomeActivity.this.onSuccess(user.getId());
- // session.closeAndClearTokenInformation();
- }
- });
- }
- // session is closed, show error dialog
- else if (state.isClosed()) {
- NovalacLogger.logD("state is not opened");
- }
- }
- private static final String OAUTH_CONSUMER_KEY = "HnzTBLRUh3wphE5xp8ZsNvmwh";
- private static final String OAUTH_CONSUMER_SECRET = "OGDLu3segzRqKLQmfzqAu1NzAch5p5FTLLuZqyck8wdD4aQFHb";
- // private static final String OAUTH_CONSUMER_KEY =
- // "L8YIhIJlXtwS9qNyrS2qxuNlG";
- // private static final String OAUTH_CONSUMER_SECRET =
- // "RgJC0Ez0awRR064770p2RxYb3HJ2EorJGRboyNbtTe9St27yI0";
- private static final String TWITTER_CALLBACK_URL = "oauth://t4jsample";
- // private static final String TWITTER_CALLBACK_URL =
- // "http://www.neznam.com/";
- public static final String URL_TWITTER_OAUTH_VERIFIER = "oauth_verifier";
- private static RequestToken requestToken;
- private static Twitter twitter;
- private void loginTwitter() {
- twitterWebView = new WebView(this);
- twitterWebViewWrapper.setVisibility(View.VISIBLE);
- twitterWebViewWrapper.addView(twitterWebView);
- twitterWebView.onResume();
- twitterWebView.setWebViewClient(new WebViewClient() {
- @Override
- public void onLoadResource(WebView view, String url) {
- // TODO Auto-generated method stub
- NovalacLogger.logD("load res=" + url);
- super.onLoadResource(view, url);
- }
- @Override
- public void onPageStarted(WebView view, String url, Bitmap favicon) {
- NovalacLogger.logD("onpagestart=" + url);
- super.onPageStarted(view, url, favicon);
- }
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- twitterWebView.setVisibility(View.GONE);
- twitterWebViewWrapper.setVisibility(View.GONE);
- // need to use reflection because of min api 8 - onPause webview
- // is available from 11
- try {
- Class.forName("android.webkit.WebView")
- .getMethod("onPause", (Class[]) null)
- .invoke(twitterWebView, (Object[]) null);
- // twitterWebView.destroy();
- } catch (IllegalAccessException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- } catch (IllegalArgumentException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- } catch (InvocationTargetException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- } catch (NoSuchMethodException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- } catch (ClassNotFoundException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- if (url.contains(TWITTER_CALLBACK_URL)) {
- try {
- Uri uri = Uri.parse(url);
- NovalacLogger.logD("url=" + url);
- new AsyncTwitterUserRequest().execute(uri);
- } catch (IllegalStateException e) {
- e.printStackTrace();
- }
- return false;
- } else {
- // return super.shouldOverrideUrlLoading(view, url);
- return false;
- }
- }
- });
- twitterWebView.clearCache(true);
- ConfigurationBuilder builder = new ConfigurationBuilder();
- builder.setOAuthConsumerKey(OAUTH_CONSUMER_KEY);
- builder.setOAuthConsumerSecret(OAUTH_CONSUMER_SECRET);
- try {
- twitter4j.conf.Configuration configuration = builder.build();
- TwitterFactory factory = new TwitterFactory(configuration);
- twitter = factory.getInstance();
- new AsyncTwitterRequest().execute();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- private class AsyncTwitterRequest extends AsyncTask {
- @Override
- protected Object doInBackground(Object[] params) {
- try {
- requestToken = twitter
- .getOAuthRequestToken(TWITTER_CALLBACK_URL);
- } catch (TwitterException e) {
- e.printStackTrace();
- }
- HomeActivity.this.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- if (requestToken != null) {
- twitterWebView.setVisibility(View.VISIBLE);
- NovalacLogger.logD("request token url="
- + requestToken.getAuthenticationURL());
- twitterWebView.loadUrl(requestToken
- .getAuthenticationURL());
- } else {
- NovalacLogger.logD("request token == null");
- twitterWebView.setVisibility(View.GONE);
- }
- }
- });
- return null;
- }
- }
- private class AsyncTwitterUserRequest extends AsyncTask {
- @Override
- protected Object doInBackground(Object[] params) {
- NovalacLogger.logD("async twitter user request");
- Uri uri = (Uri) params[0];
- String verifier = uri.getQueryParameter(URL_TWITTER_OAUTH_VERIFIER);
- try {
- final AccessToken accessToken = twitter.getOAuthAccessToken(
- requestToken, verifier);
- prefs.setTwitterLoggedIn(true);
- prefs.setTwitterOauthToken(accessToken.getToken());
- prefs.setTwitterTokenSecret(accessToken.getTokenSecret());
- // final User user = twitter.showUser(twitter.getId());
- if (shouldPostPhotoAfterTwitterLogin) {
- shouldPostPhotoAfterTwitterLogin = false;
- shareOnTwitterWithImage(cachedShareData);
- } else {
- postLoginUser(twitter.getId() + "", "twitter");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- }
- @Override
- protected void onStop() {
- super.onStop();
- if (mGoogleApiClient != null) {
- mGoogleApiClient.disconnect();
- }
- }
- private ConnectionResult mConnectionResult;
- private void loginGooglePlus() {
- // User clicked the sign-in button, so begin the sign-in process and automatically
- // attempt to resolve any errors that occur.
- mShouldResolve = true;
- mGoogleApiClient.connect();
- }
- private void postLoginUser(String uid, final String provider) {
- NovalacService service = ((NovalacApplication) getApplication())
- .getService();
- SocialUser socialUser = new SocialUser();
- socialUser.setUid(uid);
- socialUser.setProvider(provider);
- SocialUserWrapper wrapper = new SocialUserWrapper();
- wrapper.setSocialUser(socialUser);
- service.login(wrapper, new BaseCallback<AuthTokenWrapper>() {
- @Override
- protected void onSuccess(AuthTokenWrapper t, Response response) {
- String result = String.format(URLstub, STUB_SOCIAL_LOGIN,
- t.getAuthToken());
- NovalacLogger.logD("login provider=" + provider
- + " with token=" + t.getAuthToken());
- webView.loadUrl(result);
- }
- @Override
- protected void onErrorMessage(String message) {
- String result = String.format(URLstub, STUB_SOCIAL_LOGIN, "0");
- NovalacLogger.logD("login provider=" + provider
- + " with token=" + " on error msg");
- webView.loadUrl(result);
- }
- @Override
- protected void onGenericError() {
- String result = String.format(URLstub, STUB_SOCIAL_LOGIN, "0");
- webView.loadUrl(result);
- NovalacLogger.logD("login provider=" + provider
- + " with token=" + " on gen err");
- }
- });
- }
- @Override
- protected void onResume() {
- super.onResume();
- // Session session = Session.getActiveSession();
- // if (session != null &&
- // (session.isOpened() || session.isClosed())) {
- // onSessionStateChange(session, session.getState(), null);
- // }
- uiHelper.onResume();
- }
- @Override
- protected void onPause() {
- super.onPause();
- uiHelper.onPause();
- }
- /**
- * Register push with our server, send the device id and language instance
- * id
- */
- private void registerLocally(final String regId) {
- prefs.setGCMRegistrationID(regId);
- PushRegisterSource source = Sources
- .getPushRegisterSource(NovalacApplication.getHomeActivity());
- PushRegisterParams params = new PushRegisterParams();
- params.setDeviceToken(regId);
- params.setLocale(prefs.getStoredLanguage());
- params.setPlatformId(2);
- params.setUdid(NovalacUtil.getUniqueDeviceId(HomeActivity.this));
- // params.setInstanceId(prefs.getStoredLanguageId());
- params.setInstanceId(prefs.getStoredPushNotificationLanguageId());
- source.setHttpMethod(HttpMethod.POST);
- source.setErrorDeserializer(new NovalacErrorHandler());
- source.setSerializer(new QueryStringSerializer());
- source.setParams(params);
- source.fetchAsync(new LoadListener() {
- @Override
- public void onError(ArrayList<Error> errors) {
- NovalacLogger
- .logD("push onregister local server error - nesto");
- }
- @Override
- public void beforeLoad() {
- }
- @Override
- public void afterLoad(DataContainer container) {
- NovalacLogger
- .logD("push onregister local server after load - yeah!");
- StatusResponse response = (StatusResponse) container;
- if (response != null) {
- if (response.getStatus().toLowerCase().contains("error")) {
- Toast.makeText(HomeActivity.this,
- response.getErrorMessage(), Toast.LENGTH_LONG)
- .show();
- } else {
- // Toast.makeText(HomeActivity.this, "all ok",
- // Toast.LENGTH_LONG).show();
- }
- }
- }
- });
- }
- /**
- * Unregister push with our server
- */
- public void unregisterLocally(final String regId, int oldLanguageId) {
- PushUnregisterSource source = Sources
- .getPushUnregisterSource(NovalacApplication.getHomeActivity());
- PushUnregisterParams params = new PushUnregisterParams();
- params.setDeviceid(NovalacUtil.getUniqueDeviceId(this));
- params.setInstanceId(oldLanguageId);
- source.setParams(params);
- source.setErrorDeserializer(new NovalacErrorHandler());
- source.fetchAsync(new LoadListener() {
- @Override
- public void onError(ArrayList<Error> errors) {
- Log.d("push unregister local server error", "nesto");
- }
- @Override
- public void beforeLoad() {
- // TODO Auto-generated method stub
- }
- @Override
- public void afterLoad(DataContainer container) {
- Log.d("push unregister local server ok", "nesto");
- }
- });
- }
- private void setConfigurationLanguage(String language) {
- // Added because API returned wrong locale for serbian language
- if (language.equals("rs")) {
- language = "sr";
- }
- Locale locale = new Locale(language);
- Locale.setDefault(locale);
- Configuration config = new Configuration();
- config.locale = locale;
- getApplicationContext().getResources().updateConfiguration(config,
- getBaseContext().getResources().getDisplayMetrics());
- }
- private OnClickListener loadListener() {
- OnClickListener listener = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- URL = etURL.getText().toString();
- prefs.setStoredURL(URL);
- webView.loadUrl(URL);
- // chooseFromGallery();
- }
- };
- return listener;
- }
- @SuppressLint("NewApi")
- private void initWebView(boolean languageChanged) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- WebView.setWebContentsDebuggingEnabled(true);
- }
- webView.getSettings().setJavaScriptEnabled(true);
- webView.getSettings().setDomStorageEnabled(true);
- webView.getSettings().setAppCacheEnabled(true);
- webView.getSettings().setAppCacheMaxSize(1024 * 1024 * 5);
- webView.getSettings().setAppCachePath(getCacheDir().getAbsolutePath());
- webView.getSettings().setAllowFileAccess(true);
- webView.getSettings().setDatabaseEnabled(true);
- // String sDataPath = "/data/data/" + webView.getContext().getPackageName()
- // + "/databases/"; // old path
- String sDataPath = getApplicationContext().getDir("databases", Context.MODE_PRIVATE).getPath();
- webView.getSettings().setDatabasePath(sDataPath);
- webView.getSettings().setDatabaseEnabled(true);
- webView.addJavascriptInterface(new AndroidInterface(HomeActivity.this),
- "Android");
- webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
- webView.getSettings().setRenderPriority(RenderPriority.HIGH);
- webView.setWebChromeClient(new WebChromeClient() {
- @Override
- public void onExceededDatabaseQuota(String url,
- String databaseIdentifier, long quota,
- long estimatedDatabaseSize, long totalQuota,
- QuotaUpdater quotaUpdater) {
- quotaUpdater.updateQuota(5 * 1024 * 1024);
- }
- });
- webView.setWebViewClient(new WebViewClient() {
- @Override
- public void onFormResubmission(WebView view, Message dontResend,
- Message resend) {
- super.onFormResubmission(view, dontResend, resend);
- }
- @Override
- public void onLoadResource(WebView view, String url) {
- super.onLoadResource(view, url);
- }
- @Override
- public void onPageFinished(WebView view, String url) {
- super.onPageFinished(view, url);
- }
- @Override
- public void onPageStarted(WebView view, String url, Bitmap favicon) {
- super.onPageStarted(view, url, favicon);
- }
- @Override
- public void onReceivedError(WebView view, int errorCode,
- String description, String failingUrl) {
- super.onReceivedError(view, errorCode, description, failingUrl);
- }
- @Override
- public void onReceivedHttpAuthRequest(WebView view,
- HttpAuthHandler handler, String host, String realm) {
- super.onReceivedHttpAuthRequest(view, handler, host, realm);
- }
- @Override
- public void onReceivedSslError(WebView view,
- SslErrorHandler handler, SslError error) {
- super.onReceivedSslError(view, handler, error);
- }
- @Override
- public void onScaleChanged(WebView view, float oldScale,
- float newScale) {
- super.onScaleChanged(view, oldScale, newScale);
- }
- @Override
- public void onUnhandledKeyEvent(WebView view, KeyEvent event) {
- super.onUnhandledKeyEvent(view, event);
- }
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- NovalacLogger.logD("url=" + url);
- if (url.contains(URL_FILEPICKER)) {
- String[] actions = url.split("/");
- cancel = actions[actions.length - 1];
- camera = actions[actions.length - 2];
- photo = actions[actions.length - 3];
- try {
- cancel = URLDecoder.decode(cancel, "UTF-8");
- camera = URLDecoder.decode(camera, "UTF-8");
- photo = URLDecoder.decode(photo, "UTF-8");
- changeUserAvatar();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- return true;
- } else if (url.contains(URL_DATEPICKER)) {
- dateDialog.show();
- return true;
- } else if (url.contains(URL_EXTERNAL)) {
- String tmpUrl = url.replace(URL_EXTERNAL, "");
- if (tmpUrl.startsWith("/")) {
- tmpUrl = tmpUrl.substring(1);
- }
- // if (!tmpUrl.startsWith("http://") &&
- // !tmpUrl.startsWith("https://"))
- // tmpUrl = "http://" + tmpUrl;
- Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri
- .parse(tmpUrl));
- startActivity(myIntent);
- return true;
- }
- if (url.contains(URL_LANGUAGE)) {
- String language = url.replace(URL_LANGUAGE, "");
- NovalacLogger.logD("language=" + language);
- if (language.startsWith("/")) {
- language = language.substring(1);
- }
- NovalacLogger.logD("language=" + language);
- // int oldLanguageId = prefs.getStoredLanguageId();
- int oldLanguageId = prefs
- .getStoredPushNotificationLanguageId();
- prefs.setStoredLanguage(language);
- prefs.setStoredPushNotificatinLanguage(language);
- setConfigurationLanguage(language);
- Calendar cal = Calendar.getInstance(Locale.getDefault());
- dateDialog = new DatePickerDialog(HomeActivity.this,
- HomeActivity.this, cal.get(Calendar.YEAR), cal
- .get(Calendar.MONTH), cal
- .get(Calendar.DAY_OF_MONTH));
- unregisterLocally(prefs.getGCMRegistrationID(),
- oldLanguageId);
- registerLocally(prefs.getGCMRegistrationID());
- initWebView(true);
- // getAndLoadUrl(true);
- return true;
- } else if (url.contains(URL_BANNERS)) {
- loadBanner();
- return true;
- } else if (url.contains(URL_CLOSE)) {
- finish();
- return true;
- } else if (url.contains(URL_TIMEPICKER)) {
- showTimePicker();
- return true;
- } else if (url.contains(URL_REMINDER)) {
- if (url.contains(STUB_CREATE)) {
- String contentReminder = "";
- String reminderParams = url.replace(URL_REMINDER + "/"
- + STUB_CREATE + "/", "");
- String[] params = reminderParams.split("/");
- try {
- if (ReminderService.createReminderAndSave(
- HomeActivity.this, params[0],
- Long.parseLong(params[1]), params[2],
- params[3])) {
- contentReminder = String.format(URLstub,
- STUB_REMINDER + STUB_CREATE, "1");
- } else {
- // contentReminder = String.format(URLstub,
- // STUB_REMINDER + STUB_CREATE, "0");
- return true;
- }
- } catch (NumberFormatException e) {
- e.printStackTrace();
- contentReminder = String.format(URLstub,
- STUB_REMINDER + STUB_CREATE, "0");
- } catch (JSONException e) {
- e.printStackTrace();
- }
- NovalacLogger
- .logD("contentReminder=" + contentReminder);
- webView.loadUrl(contentReminder);
- } else if (url.contains(STUB_UPDATE)) {
- String reminderParams = url.replace(URL_REMINDER + "/"
- + STUB_UPDATE + "/", "");
- String contentReminder = "";
- String[] params = reminderParams.split("/");
- try {
- if (ReminderService.updateReminder(
- HomeActivity.this, params[0],
- Long.parseLong(params[1]), params[2],
- params[3])) {
- contentReminder = String.format(URLstub,
- STUB_REMINDER + STUB_UPDATE, "1");
- NovalacLogger.logD("true");
- } else {
- // contentReminder = String.format(URLstub,
- // STUB_REMINDER + STUB_UPDATE, "0");
- NovalacLogger.logD("false");
- return true;
- }
- } catch (NumberFormatException e) {
- e.printStackTrace();
- contentReminder = String.format(URLstub,
- STUB_REMINDER + STUB_UPDATE, "0");
- } catch (JSONException e) {
- e.printStackTrace();
- contentReminder = String.format(URLstub,
- STUB_REMINDER + STUB_UPDATE, "0");
- }
- NovalacLogger
- .logD("contentReminder=" + contentReminder);
- webView.loadUrl(contentReminder);
- } else if (url.contains(STUB_DESTROY)) {
- String reminderParams = url.replace(URL_REMINDER + "/"
- + STUB_DESTROY + "/", "");
- String[] params = reminderParams.split("/");
- try {
- ReminderService.deleteReminder(HomeActivity.this,
- params[0]);
- } catch (JSONException e) {
- e.printStackTrace();
- }
- String contentReminder = String.format(URLstub,
- STUB_REMINDER + STUB_DESTROY, "1");
- NovalacLogger
- .logD("contentReminder=" + contentReminder);
- webView.loadUrl(contentReminder);
- }
- return true;
- } else if (url.contains(URL_PUSH_APP_LOADED)) {
- appLoaded = true;
- if (fromPush && appLoaded) {
- if (content != null) {
- webView.loadUrl("javascript:NativeBridge.pushNotification.alert(\""
- + content + "\")");
- } else if (custom != null) {
- try {
- JSONObject obj = new JSONObject(custom);
- urlText = obj.getString("text");
- urlUrl = obj.getString("url");
- webView.loadUrl("javascript:NativeBridge.pushNotification.urlAlert(\""
- + urlText + "\", \"" + urlUrl + "\")");
- } catch (JSONException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- return true;
- } else if (url.contains(URL_SHARE)) {
- String shareParams = url.replace(URL_SHARE + "/", "");
- String[] params = shareParams.split("/");
- String message;
- try {
- message = URLDecoder.decode(params[1], "UTF-8");
- if (params[0].equals("twitter")) {
- shareOnTwitter(message);
- } else if (params[0].equals("facebook")) {
- shareOnFacebook(message);
- }
- } catch (UnsupportedEncodingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- } else if (url.contains(URL_EXPORT_ADD)) {
- return true;
- } else if (url.contains(URL_EXPORT_SEND)) {
- return true;
- } else if (url.contains(URL_LOADING)) {
- toggleProgressDialog();
- return true;
- } else if (url.contains(URL_MEASUREMENT_NOTIFICAITON)) {
- String measurementParams = url.replace(
- URL_MEASUREMENT_NOTIFICAITON + "/", "");
- String[] params = measurementParams.split("/");
- String childID = params[0];
- String timestamp;
- if (params.length == 1) {
- timestamp = "";
- } else {
- timestamp = params[1];
- }
- if (timestamp != "") {
- raiseAlarmNotification(childID, timestamp);
- } else {
- deleteAlarmNotification(childID);
- }
- return true;
- } else if (url.contains(URL_SOCIAL_LOGIN)) {
- String social = url.replace(URL_SOCIAL_LOGIN + "/", "");
- NovalacLogger.logD("social=" + social);
- if (social.equals(STUB_FACEBOOK)) {
- loginFacebook();
- } else if (social.equals(STUB_TWITTER)) {
- loginTwitter();
- } else if (social.equals(STUB_GOOGLE)) {
- loginGooglePlus();
- }
- return true;
- } else if (url.contains(URL_LOGIN)) {
- String loginString = url.replace(URL_LOGIN + "/", "");
- String[] params = loginString.split("/");
- loginUser(params[0], params[1]);
- return true;
- } else if (url.contains(URL_USER_CREATE)) {
- String userCreateString = url.replace(
- URL_USER_CREATE + "/", "");
- String[] params = userCreateString.split("/");
- createUser(params[0], params[1]);
- return true;
- } else if (url.contains(URL_IMPORT_USER_DATA)) {
- String userToken = url.replace(URL_IMPORT_USER_DATA + "/",
- "");
- importUser(userToken);
- return true;
- } else if (url.contains(URL_LOAD_USER_DATA)) {
- String userToken = url
- .replace(URL_LOAD_USER_DATA + "/", "");
- importUser(userToken);
- return true;
- } else if (url.contains(URL_RESET_PASSWORD)) {
- String email = url.replace(URL_RESET_PASSWORD + "/", "");
- resetPassword(email);
- return true;
- } else if (url.contains(URL_NATIVE)) {
- NovalacLogger.logD("url native=" + url);
- return true;
- } else {
- NovalacLogger.logD("should override normal");
- return super.shouldOverrideUrlLoading(view, url);
- }
- }
- });
- webView.setWebChromeClient(new WebChromeClient());
- webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
- getAndLoadUrl(languageChanged);
- if (fromPush && appLoaded) {
- if (content != null) {
- webView.loadUrl("javascript:NativeBridge.pushNotification.alert(\""
- + content + "\")");
- } else if (custom != null) {
- try {
- JSONObject obj = new JSONObject(custom);
- urlText = obj.getString("text");
- urlUrl = obj.getString("url");
- webView.loadUrl("javascript:NativeBridge.pushNotification.urlAlert(\""
- + urlText + "\", \"" + urlUrl + "\")");
- } catch (JSONException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
- private void resetPassword(String email) {
- EmailWrapper emailWrapper = new EmailWrapper();
- emailWrapper.setEmail(email);
- ((NovalacApplication) getApplication()).getService().resetPassword(
- emailWrapper, new BaseCallback<MessageResponse>() {
- @Override
- protected void onSuccess(MessageResponse t,
- Response response) {
- String result = String.format(URLstub,
- STUB_RESET_PASSWORD, 1);
- webView.loadUrl(result);
- }
- @Override
- protected void onErrorMessage(String message) {
- String result = String.format(URLstub,
- STUB_RESET_PASSWORD, 0);
- webView.loadUrl(result);
- }
- @Override
- protected void onGenericError() {
- String result = String.format(URLstub,
- STUB_RESET_PASSWORD, 0);
- webView.loadUrl(result);
- }
- });
- }
- private static final int CHUNK_SIZE = 500;
- private String cachedUserData;
- private void importUser(String userToken) {
- ((NovalacApplication) getApplication()).getService().fetchDocument(
- userToken, new BaseCallback<DocumentResponseWrapper>() {
- @Override
- protected void onSuccess(DocumentResponseWrapper t,
- Response response) {
- String result;
- if (t == null) {
- result = String.format(URLstub,
- STUB_IMPORT_USER_DATA, 0);
- webView.loadUrl(result);
- } else {
- // result = String.format(URLstub,
- // STUB_IMPORT_USER_DATA, t.getDocument());
- // String document = t.getDocument();
- // int documentLength = t.getDocument().length();
- //
- // float chunkSizeFloat = (((float)documentLength) /
- // CHUNK_SIZE);
- // int chunksSize = (int) Math.ceil(chunkSizeFloat);
- //
- // String chunkedJson;
- // for (int i = 0; i < chunksSize; i++) {
- // if ((i + 1) * CHUNK_SIZE > documentLength) {
- // chunkedJson = generateChunkJson(i, chunksSize,
- // t.getDocument().substring(i * CHUNK_SIZE));
- // } else {
- // chunkedJson = generateChunkJson(i, chunksSize,
- // t.getDocument().substring(i * CHUNK_SIZE, (i + 1
- // ) * CHUNK_SIZE));
- // }
- //
- // // result = String.format(URLstub,
- // STUB_ANDROID_CHUNK_RECEIVER, chunkedJson);
- // result = String.format(URLstub,
- // STUB_ANDROID_CHUNK_RECEIVER, "abcde");
- // webView.loadUrl(result);
- // }
- cachedUserData = t.getDocument();
- result = String.format(URLstub,
- STUB_IMPORT_USER_DATA, 1);
- webView.loadUrl(result);
- }
- }
- @Override
- protected void onGenericError() {
- String result = String.format(URLstub,
- STUB_IMPORT_USER_DATA, 0);
- NovalacLogger.logD("on generic error");
- webView.loadUrl(result);
- }
- @Override
- protected void onErrorMessage(String message) {
- NovalacLogger.logD("error msg=" + message);
- String result = String.format(URLstub,
- STUB_IMPORT_USER_DATA, 0);
- webView.loadUrl(result);
- }
- });
- }
- private static final String INDEX_JSON = "index";
- private static final String LEN_JSON = "len";
- private static final String DATA_JSON = "data";
- private String generateChunkJson(int index, int length, String data) {
- JsonObject chunkJson = new JsonObject();
- chunkJson.addProperty(INDEX_JSON, index);
- chunkJson.addProperty(LEN_JSON, length);
- chunkJson.addProperty(DATA_JSON, data);
- NovalacLogger.logD("chunk=" + chunkJson.toString());
- return chunkJson.toString();
- }
- private String saveDocumentOnDisk(String document) {
- String path = "";
- String FILENAME = "document.js";
- try {
- FileOutputStream fos = openFileOutput(FILENAME,
- Context.MODE_WORLD_READABLE);
- fos.write(document.getBytes());
- fos.close();
- path = "file://" + getFileStreamPath(FILENAME).getAbsolutePath();
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return path;
- }
- private void loginUser(String username, String password) {
- com.infinum.novalac.api.models.User user = new com.infinum.novalac.api.models.User();
- user.setEmail(username);
- user.setPassword(password);
- UserWrapper wrapper = new UserWrapper();
- wrapper.setUser(user);
- ((NovalacApplication) getApplication()).getService().login(wrapper,
- new BaseCallback<AuthTokenWrapper>() {
- @Override
- protected void onSuccess(AuthTokenWrapper t,
- Response response) {
- String result = String.format(URLstub, STUB_LOGIN,
- t.getAuthToken());
- webView.loadUrl(result);
- }
- @Override
- protected void onErrorMessage(String message) {
- String result = String.format(URLstub, STUB_LOGIN, "0");
- webView.loadUrl(result);
- }
- @Override
- protected void onGenericError() {
- String result = String.format(URLstub, STUB_LOGIN, "0");
- webView.loadUrl(result);
- }
- });
- }
- private void createUser(String username, String password) {
- com.infinum.novalac.api.models.User user = new com.infinum.novalac.api.models.User();
- user.setEmail(username);
- user.setPassword(password);
- UserWrapper userWrapper = new UserWrapper();
- userWrapper.setUser(user);
- ((NovalacApplication) getApplication()).getService().register(
- userWrapper, new BaseCallback<AuthTokenWrapper>() {
- @Override
- protected void onSuccess(AuthTokenWrapper t,
- Response response) {
- String result = String.format(URLstub,
- STUB_USER_CREATE, t.getAuthToken());
- webView.loadUrl(result);
- }
- @Override
- protected void onErrorMessage(String message) {
- String result = String.format(URLstub,
- STUB_USER_CREATE, 0);
- webView.loadUrl(result);
- }
- @Override
- protected void onGenericError() {
- String result = String.format(URLstub,
- STUB_USER_CREATE, 0);
- webView.loadUrl(result);
- }
- });
- }
- private void deleteNotificationInStatusBar(String childID) {
- NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- notificationManager.cancel(prefs.getNotificaitonIdForChildId(childID));
- }
- private void deleteAlarmNotification(String childID) {
- Intent intent = new Intent("novalac.receiver");
- intent.putExtra(CHILD_ID, childID);
- int notificationId = prefs.getNotificaitonIdForChildId(childID);
- PendingIntent sender = PendingIntent.getBroadcast(this, notificationId,
- intent, PendingIntent.FLAG_UPDATE_CURRENT);
- AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
- alarmManager.cancel(sender);
- deleteNotificationInStatusBar(childID);
- }
- private void raiseAlarmNotification(String childID, String timeStamp) {
- int notificationId = prefs.getNotificaitonIdForChildId(childID);
- if (notificationId == -100) {
- notificationId = prefs.setLastNotificaitonIdForChildId(childID);
- }
- AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
- Intent i = new Intent("novalac.receiver");
- i.putExtra(CHILD_ID, childID);
- PendingIntent pi = PendingIntent.getBroadcast(this, notificationId, i,
- PendingIntent.FLAG_UPDATE_CURRENT);
- // deleteAlarmNotification(childID);
- am.set(AlarmManager.RTC_WAKEUP, Long.valueOf(timeStamp), pi);
- // Calendar time = Calendar.getInstance();
- // time.setTimeInMillis(System.currentTimeMillis());
- // time.add(Calendar.SECOND, 5);
- // am.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), pi);
- }
- private void toggleProgressDialog() {
- if (customProggresDialog == null) {
- Dialog dialog = new Dialog(HomeActivity.this);
- View view = LayoutInflater.from(HomeActivity.this).inflate(
- R.layout.custom_progress_dialog, null);
- dialog.setCancelable(false);
- dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
- dialog.setContentView(view);
- customProggresDialog = dialog;
- customProggresDialog.show();
- } else {
- if (customProggresDialog.isShowing()) {
- customProggresDialog.cancel();
- } else {
- customProggresDialog.show();
- }
- }
- //
- // if (progressDialog == null) {
- // progressDialog = new ProgressDialog(HomeActivity.this);
- // progressDialog.setCancelable(false);
- // progressDialog.show();
- // } else {
- // if (progressDialog.isShowing()) {
- // progressDialog.cancel();
- // } else {
- // progressDialog.show();
- // }
- // }
- }
- private void shareOnFacebook(String message) {
- //
- // final FacebookFacade facebook = new FacebookFacade(this, getString(R.string.app_id));
- // if (!facebook.isAuthorized()) {
- // runOnUiThread(new Runnable() {
- // @Override
- // public void run() {
- // facebook.authorize();
- // final String content = String.format(URLstub, STUB_SHARE, "1");
- // webView.post(new Runnable() {
- // @Override
- // public void run() {
- // webView.loadUrl(content);
- // }
- // });
- // }
- // });
- // } else {
- // facebook.publishMessage(message);
- // final String content = String.format(URLstub, STUB_SHARE, "1");
- // webView.post(new Runnable() {
- // @Override
- // public void run() {
- // webView.loadUrl(content);
- // }
- // });
- // }
- if (FacebookDialog.canPresentShareDialog(this,
- FacebookDialog.ShareDialogFeature.PHOTOS)) {
- NovalacLogger.logD("can share on facebook");
- //
- // FacebookDialog shareDialog = new FacebookDialog.PhotoShareDialogBuilder(
- // this).addPhotoFiles(files).build();
- FacebookDialog dialog = new FacebookDialog.ShareDialogBuilder(
- this).setApplicationName(getString(R.string.app_name)).build();
- uiHelper.trackPendingDialogCall(dialog.present());
- } else {
- // UNABLE TO SHARE WITH IMAGE ON FACEBOOK WITHOUT INSTALLED FACEBOOK
- // APP
- // Session.openActiveSession(this, true, new StatusCallback() {
- //
- // @Override
- // public void call(Session session, SessionState state,
- // Exception exception) {
- //
- // continueShareImageWithFacebook = true;
- // cachedImageForFacebook = shareData.getImage();
- // // onSessionStateChange(session, state, exception);
- //
- // }
- // });
- //
- // NovalacLogger.logD("can not share on facebook");
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- NovalacLogger.logD("share my first 2");
- String result = String.format(URLstub, STUB_SHARE_MY_FIRST,
- 2);
- webView.loadUrl(result);
- }
- });
- }
- }
- private void shareOnTwitter(String message) {
- NovalacLogger.logD(message);
- twitterHelper = new TwitterHelper(this);
- twitterHelper.postTweet(HomeActivity.this, message);
- String content = String.format(URLstub, STUB_SHARE, "1");
- webView.loadUrl(content);
- }
- private void loadBanner() {
- BannersSource source = Sources.getBannersSource(HomeActivity.this);
- source.setSerializer(new QueryStringSerializer());
- source.setDeserializer(new BannersCustomDeserializer());
- BannersParams params = new BannersParams();
- params.setLanguageID(prefs.getStoredLanguageId());
- // params.setLanguageID(32);
- source.setParams(params);
- source.fetchAsync(new LoadListener() {
- @Override
- public void onError(ArrayList<Error> errors) {
- // TODO Auto-generated method stub
- }
- @Override
- public void beforeLoad() {
- // TODO Auto-generated method stub
- }
- @Override
- public void afterLoad(DataContainer container) {
- Store<Banner> banners = (Store<Banner>) container;
- String response = null;
- if (banners == null || banners.size() == 0) {
- response = "[]";
- } else {// vadi podatke iz BannersCustomDeserializera kao
- // rawData i samo proslijedujem dalje
- response = banners.get(0).getBannerUrl();
- }
- String content = String.format(URLstubWithResponse,
- STUB_BANNERS, response);
- // NovalacLogger.logD("content=" + content);
- webView.loadUrl(content);
- }
- });
- }
- private void showTimePicker() {
- Calendar cal = Calendar.getInstance();
- TimePickerDialog timePickerDialog = new TimePickerDialog(this,
- onTimeSetListener, cal.get(Calendar.HOUR_OF_DAY),
- cal.get(Calendar.MINUTE), true);
- timePickerDialog.show();
- }
- private OnTimeSetListener onTimeSetListener = new OnTimeSetListener() {
- @Override
- public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
- String content = String.format(
- URLstub,
- STUB_TIMEPICKER,
- String.format("%02d", hourOfDay) + ":"
- + String.format("%02d", minute));
- webView.loadUrl(content);
- }
- };
- public void getAndLoadUrl(final boolean languageChanged) {
- // URL = "http://labs.infinum.hr/medis/";
- // URL = NovalacPreferences.NOVALAC_SERVER;
- // URL = "file:///android_asset/index.html";
- String URLComplete;
- if (android.os.Build.VERSION.SDK_INT == 15) {
- // prefs.setStoredLanguage("hr");
- if (prefs.getStoredLanguage() == null) {
- webView.getSettings().setUserAgentString(
- "{firstRun: 1, hash:'#language'}");
- // webView.loadUrl("javascript:(function(){window.startingParams = { firstRun: 1, hash:'#language'};})()");
- // URLComplete = URL + "?android=1&firstRun=1#language";
- } else {
- if (languageChanged) {
- webView.getSettings().setUserAgentString(
- "{ firstRun: 1, language: '"
- + prefs.getStoredLanguage() + "'}");
- // webView.loadUrl("javascript:window.location.reload( true )");
- // webView.loadUrl("javascript:(function(){window.startingParams = { firstRun: 1, language: '"
- // + prefs.getStoredLanguage() + "'};})()");
- // URLComplete = URL + "?language=" +
- // prefs.getStoredLanguage()
- // + "&firstRun=1&android=1";
- } else {
- webView.getSettings().setUserAgentString(
- "{ firstRun: 0, language: '"
- + prefs.getStoredLanguage() + "'}");
- // webView.loadUrl("javascript:(function(){window.startingParams = { firstRun: 0, language: '"
- // + prefs.getStoredLanguage() + "'};})()");
- // URLComplete = URL + "?language=" +
- // prefs.getStoredLanguage()
- // + "&firstRun=0&android=1";
- }
- }
- prefs.setStoredURL(URL);
- webView.loadUrl(URL);
- } else {
- if (prefs.getStoredLanguage() == null) {
- URLComplete = URL + "?android=1&firstRun=1#language";
- } else {
- if (languageChanged) {
- URLComplete = URL + "?language="
- + prefs.getStoredLanguage()
- + "&firstRun=1&android=1";
- } else {
- URLComplete = URL + "?language="
- + prefs.getStoredLanguage()
- + "&firstRun=0&android=1";
- }
- }
- prefs.setStoredURL(URLComplete);
- webView.loadUrl(URLComplete);
- }
- }
- public static String getUrl(Context context) {
- // String tempURL = "http://labs.infinum.hr/medis/";
- String tempURL = NovalacPreferences.NOVALAC_SERVER;
- NovalacPreferences tempPrefs = new NovalacPreferences(context);
- if (android.os.Build.VERSION.SDK_INT != 15) {
- tempURL += "?language=" + tempPrefs.getStoredLanguage()
- + "&firstRun=0&android=1";
- }
- return tempURL;
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // getMenuInflater().inflate(R.menu.activity_home, menu);
- return true;
- }
- private void changeUserAvatar() {
- AlertDialog.Builder adb = new Builder(this);
- // CharSequence[] picItems = new String[] {
- // getString(R.string.select_gallery_btn),
- // getString(R.string.select_photo_btn),
- // getString(R.string.cancel_btn)
- // };
- CharSequence[] picItems = new String[]{photo, camera, cancel};
- adb.setTitle(R.string.app_name);
- adb.setItems(picItems, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int itemID) {
- switch (itemID) {
- case 0:
- chooseFromGallery();
- break;
- case 1:
- takeAPhoto();
- break;
- case 2:
- dialog.dismiss();
- break;
- default:
- dialog.dismiss();
- break;
- }
- }
- });
- adb.show();
- }
- private void chooseFromGallery() {
- Intent intent = new Intent(Intent.ACTION_PICK,
- android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
- intent.setType("image/*");
- startActivityForResult(intent, REQUEST_CHOOSE_FROM_GALLERY);
- }
- private void takeAPhoto() {
- Intent intent = new Intent(
- android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
- Uri fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
- currentPhotoUri = fileUri;
- intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
- try {
- intent.putExtra("return-data", true);
- startActivityForResult(intent, REQUEST_TAKE_A_PHOTO);
- } catch (ActivityNotFoundException e) {
- // TODO: sta ako nema niceg
- }
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- // FacebookLoginUtil.onActivityResult(this, requestCode, resultCode,
- // data);
- uiHelper.onActivityResult(requestCode, resultCode, data,
- new Callback() {
- @Override
- public void onError(PendingCall pendingCall,
- Exception error, Bundle data) {
- NovalacLogger.logD("facebook share on error");
- if (continueShareImageWithFacebook) {
- // onSessionStateChange()
- } else {
- String result = String.format(URLstub,
- STUB_SHARE_MY_FIRST, 0);
- webView.loadUrl(result);
- }
- }
- @Override
- public void onComplete(PendingCall pendingCall, Bundle data) {
- NovalacLogger.logD("facebook share on complete");
- if (continueShareImageWithFacebook) {
- } else {
- if (FacebookDialog.getNativeDialogDidComplete(data)) {
- if (FacebookDialog.COMPLETION_GESTURE_CANCEL.equals(FacebookDialog
- .getNativeDialogCompletionGesture(data))) {
- String result = String.format(URLstub,
- STUB_SHARE_MY_FIRST, 0);
- webView.loadUrl(result);
- } else {
- String result = String.format(URLstub,
- STUB_SHARE_MY_FIRST, 1);
- webView.loadUrl(result);
- }
- } else {
- String result = String.format(URLstub,
- STUB_SHARE_MY_FIRST, 0);
- webView.loadUrl(result);
- }
- }
- }
- });
- if (resultCode == RESULT_OK) {
- if (requestCode == CROP) {
- Bitmap bmp = (Bitmap) data.getExtras().get("data");
- saveImage(bmp);
- } else if (requestCode == REQUEST_TAKE_A_PHOTO) {
- Intent intent = new Intent(this,
- eu.janmuller.android.simplecropimage.CropImage.class);
- if (currentPhotoUri != null) {
- intent.setData(currentPhotoUri);
- String filePath = currentPhotoUri.getPath();
- intent.putExtra(CropImage.IMAGE_PATH, filePath);
- // int rotationForImage =
- // AiImageUtils.rotationForImage(this,
- // filePath);
- // intent.putExtra("rotation_angle", rotationForImage);
- } else {
- if (data.getExtras() != null
- && data.getExtras().get("data") != null) {
- Bitmap b = (Bitmap) data.getExtras().get("data");
- intent.putExtra("data", b);
- } else {
- return;
- }
- }
- intent.putExtra(CropImage.ASPECT_X, 1);
- intent.putExtra(CropImage.ASPECT_Y, 1);
- intent.putExtra(CropImage.OUTPUT_X, 400);
- intent.putExtra(CropImage.OUTPUT_Y, 400);
- intent.putExtra(CropImage.RETURN_DATA, true);
- intent.putExtra(CropImage.SCALE, true);
- startActivityForResult(intent, CROP);
- } else if (requestCode == REQUEST_CHOOSE_FROM_GALLERY) {
- Uri u = null;
- if (data != null) {
- u = data.getData();
- if (u != null) {
- // Intent intent = new Intent(this,
- // com.android.camera.CropImage.class);
- Intent intent = new Intent(
- this,
- eu.janmuller.android.simplecropimage.CropImage.class);
- // Ovdje nije potrebno raditi neke rotacije kada se
- // uzima slika
- // iz galerije
- // intent.setData(u);
- // String filePath = getRealPathFromURI(u);
- // int rotationForImage =
- // AiImageUtils.rotationForImage(this, filePath);
- // intent.putExtra("rotation_angle", rotationForImage);
- // } else {
- // Bitmap b = (Bitmap) data.getExtras().get("data");
- //
- // intent.putExtra("data", b);
- // }
- String filePath = getRealPathFromURI(u);
- intent.putExtra(CropImage.IMAGE_PATH, filePath);
- intent.putExtra(CropImage.ASPECT_X, 1);
- intent.putExtra(CropImage.ASPECT_Y, 1);
- intent.putExtra(CropImage.OUTPUT_X, 400);
- intent.putExtra(CropImage.OUTPUT_Y, 400);
- intent.putExtra(CropImage.RETURN_DATA, true);
- intent.putExtra(CropImage.SCALE, true);
- startActivityForResult(intent, CROP);
- } else {
- return;
- }
- }
- } else if (requestCode == TwitterHelper.TWITTER_CODE) {
- twitterHelper.handleAuthenticationCallback(HomeActivity.this,
- data);
- }
- }
- if (requestCode == GOOGLE_PLUS_REQUEST_CODE
- || requestCode == REQUEST_AUTHORIZATION) {
- // If the error resolution was not successful we should not resolve further.
- if (resultCode != RESULT_OK) {
- mShouldResolve = false;
- } else {
- mIsResolving = false;
- mGoogleApiClient.connect();
- }
- }
- }
- private void saveImage(Bitmap bmp) {
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
- bmp.compress(Bitmap.CompressFormat.JPEG, 100, stream);
- byte[] image = stream.toByteArray();
- try {
- stream.flush();
- stream.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- String encodedImage = Base64.encodeToString(image, Base64.DEFAULT);
- if (encodedImage.contains("\n")) {
- NovalacLogger.logD(encodedImage);
- encodedImage = encodedImage.replaceAll("\n", "");
- NovalacLogger.logD(encodedImage);
- }
- String content = String.format(URLstub, STUB_FILEPICKER,
- "data:image/png;base64," + encodedImage);
- NovalacLogger.logD(content);
- webView.loadUrl(content);
- }
- // @Override
- // public void onDateSet(DatePicker view, int year, int monthOfYear, int
- // dayOfMonth) {
- //
- // // if (isPastDate(year, monthOfYear, dayOfMonth)) {
- // // return;
- // // }
- //
- // Calendar cal = Calendar.getInstance();
- // cal.set(year, monthOfYear, dayOfMonth);
- //
- // Calendar todayDate = Calendar.getInstance();
- //
- // if (cal.after(todayDate)) {
- //
- // dateDialog.updateDate(todayDate.get(Calendar.YEAR),
- // todayDate.get(Calendar.MONTH),
- // todayDate.get(Calendar.DAY_OF_MONTH));
- // dateDialog.show();
- // } else {
- // Long milis = cal.getTimeInMillis();
- // String content = String.format(URLstub, STUB_DATEPICKER,
- // String.valueOf(milis));
- // Log.d("NOVALAC - datepicker content native load", content);
- // webView.loadUrl(content);
- // }
- //
- // }
- @Override
- public void onBackPressed() {
- webView.loadUrl("javascript:NativeBridge.back()");
- }
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- }
- // @Override
- // public void onDateSet(net.simonvt.widget.DatePicker view, int year, int
- // monthOfYear, int dayOfMonth) {
- // // TODO Auto-generated method stub
- //
- // Calendar cal = Calendar.getInstance();
- // cal.set(year, monthOfYear, dayOfMonth);
- // Long milis = cal.getTimeInMillis();
- // String content = String.format(URLstub, STUB_DATEPICKER,
- // String.valueOf(milis));
- // Log.d("NOVALAC - datepicker content native load", content);
- // webView.loadUrl(content);
- //
- // }
- //
- // private DatePickerDialog.OnDateSetListener mDateSetListener = new
- // DatePickerDialog.OnDateSetListener() {
- //
- // @Override
- // public void onDateSet(net.simonvt.widget.DatePicker view, int year, int
- // monthOfYear, int dayOfMonth) {
- // Calendar cal = Calendar.getInstance();
- // cal.set(year, monthOfYear, dayOfMonth);
- // Long milis = cal.getTimeInMillis();
- // String content = String.format(URLstub, STUB_DATEPICKER,
- // String.valueOf(milis));
- // Log.d("NOVALAC - datepicker content native load", content);
- // webView.loadUrl(content);
- //
- // }
- // };
- @Override
- public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
- Calendar cal = Calendar.getInstance();
- // cal.set(year, monthOfYear, dayOfMonth);
- cal.set(arg1, arg2, arg3);
- Long milis = cal.getTimeInMillis();
- String content = String.format(URLstub, STUB_DATEPICKER,
- String.valueOf(milis));
- NovalacLogger.logD("datepicker content native load - " + content);
- webView.loadUrl(content);
- }
- @Override
- protected void onNewIntent(Intent intent) {
- // TODO Auto-generated method stub
- super.onNewIntent(intent);
- }
- private boolean hasInternet(Context context) {
- boolean connected = false;
- try {
- ConnectivityManager connectivityManager = (ConnectivityManager) context
- .getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo networkInfo = connectivityManager
- .getActiveNetworkInfo();
- connected = networkInfo != null && networkInfo.isAvailable()
- && networkInfo.isConnected();
- return connected;
- } catch (Exception e) {
- }
- return connected;
- }
- public String getRealPathFromURI(Uri contentUri) {
- String[] columns = {MediaStore.Images.Media.DATA};
- Cursor cursor = managedQuery(contentUri, columns, // Which columns to
- // return
- null, // WHERE clause; which rows to return (all rows)
- null, // WHERE clause selection arguments (none)
- null); // Order-by clause (ascending by name)
- int column_index = cursor
- .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
- cursor.moveToFirst();
- return cursor.getString(column_index);
- }
- public static final int MEDIA_TYPE_IMAGE = 1;
- public static final int MEDIA_TYPE_VIDEO = 2;
- private static final String CURRENT_PHOTO_URI = "current_photo_uri";
- private TwitterHelper twitterHelper;
- /** Create a file Uri for saving an image or video */
- private static Uri getOutputMediaFileUri(int type) {
- return Uri.fromFile(getOutputMediaFile(type));
- }
- /** Create a File for saving an image or video */
- private static File getOutputMediaFile(int type) {
- // To be safe, you should check that the SDCard is mounted
- // using Environment.getExternalStorageState() before doing this.
- File mediaStorageDir = new File(
- Environment
- .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
- "Novalac");
- // This location works best if you want the created images to be shared
- // between applications and persist after your app has been uninstalled.
- // Create the storage directory if it does not exist
- if (!mediaStorageDir.exists()) {
- if (!mediaStorageDir.mkdirs()) {
- // Log.d("MyCameraApp", "failed to create directory");
- return null;
- }
- }
- File noMedia = new File(mediaStorageDir, ".nomedia");
- try {
- noMedia.createNewFile();
- NovalacLogger.logD("proslo no media");
- } catch (IOException e) {
- e.printStackTrace();
- NovalacLogger.logD("nije proslo no media");
- }
- // Create a media file name
- String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
- .format(new Date());
- File mediaFile;
- if (type == MEDIA_TYPE_IMAGE) {
- mediaFile = new File(mediaStorageDir.getPath() + File.separator
- + "IMG_" + timeStamp + ".jpg");
- } else if (type == MEDIA_TYPE_VIDEO) {
- mediaFile = new File(mediaStorageDir.getPath() + File.separator
- + "VID_" + timeStamp + ".mp4");
- } else {
- return null;
- }
- return mediaFile;
- }
- public static File createImageFile() throws IOException {
- String timeStamp = new SimpleDateFormat("yyyMMdd_HHmmss")
- .format(new Date());
- String imageFileName = "novalac_" + timeStamp;
- File image = File.createTempFile(imageFileName, ".jpg",
- getPhotoStorageDir());
- return image;
- }
- @SuppressLint("NewApi")
- public static File getPhotoStorageDir() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
- File storageDir = new File(
- Environment
- .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
- "novalac");
- storageDir.mkdirs();
- return storageDir;
- } else {
- File storageDir = new File(
- Environment.getExternalStorageDirectory() + "Pictures/"
- + "novalac");
- storageDir.mkdirs();
- return storageDir;
- }
- }
- private ShareData cachedShareData;
- private void shareOnTwitterWithImage(final ShareData shareData) {
- if (shareData == null) {
- return;
- }
- AccessToken accessToken = new AccessToken(prefs.getTwitterToken(),
- prefs.getTwitterTokenSecret());
- ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
- configurationBuilder.setOAuthConsumerKey(OAUTH_CONSUMER_KEY);
- configurationBuilder.setOAuthConsumerSecret(OAUTH_CONSUMER_SECRET);
- twitter4j.conf.Configuration configuration = configurationBuilder
- .build();
- TwitterFactory twitterFactory = new TwitterFactory(configuration);
- File file = getFileFromBase64(shareData.getImage());
- final Twitter twitter = twitterFactory.getInstance(accessToken);
- final StatusUpdate status = new StatusUpdate(shareData.getMessage());
- // final byte[] imageBytes = Base64.decode(shareData.getImage(),
- // Base64.DEFAULT);
- // final File file = new File("shared_image");
- status.setMedia(file);
- new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- final Status updatedStatus = twitter.updateStatus(status);
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- if (updatedStatus != null) {
- NovalacLogger
- .logD("twitter update status successfuly");
- String result = String.format(URLstub,
- STUB_SHARE_MY_FIRST, 1);
- webView.loadUrl(result);
- } else {
- NovalacLogger
- .logD("twitter update status failed");
- String result = String.format(URLstub,
- STUB_SHARE_MY_FIRST, 0);
- webView.loadUrl(result);
- }
- }
- });
- cachedShareData = null;
- } catch (TwitterException e) {
- e.printStackTrace();
- shouldPostPhotoAfterTwitterLogin = true;
- cachedShareData = shareData;
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- loginTwitter();
- }
- });
- }
- }
- }).start();
- // runOnUiThread(new Runnable() {
- //
- // @Override
- // public void run() {
- //
- // try {
- //
- // final FileOutputStream fos = new FileOutputStream(file);
- // fos.write(imageBytes);
- //
- // } catch (FileNotFoundException e) {
- // e.printStackTrace();
- // } catch (IOException e) {
- // e.printStackTrace();
- // } finally {
- // // try {
- // // if (fos != null) {
- // // fos.close();
- // // }
- //
- // status.setMedia(file);
- //
- // Handler handler = new Handler();
- // handler.post(new Runnable() {
- //
- // @Override
- // public void run() {
- // // TODO Auto-generated method stub
- // try {
- // twitter.updateStatus(status);
- // } catch (TwitterException e) {
- // // TODO Auto-generated catch block
- // e.printStackTrace();
- // }
- // }
- // });
- // // twitter.updateStatus(status);
- //
- //
- // // } catch (IOException e) {
- // // e.printStackTrace();
- // // } catch (TwitterException e) {
- // // e.printStackTrace();
- // // loginTwitter();
- // // }
- // }
- //
- // }
- // });
- }
- private void shareOnGPlusWithImage(ShareData shareData) {
- NovalacLogger.logD("base64=" + shareData.getImage());
- byte[] imageBytes = Base64.decode(shareData.getImage(), Base64.DEFAULT);
- File path = Environment
- .getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
- File file = new File(path, "/" + "shared_image.jpg");
- // File file = new File("shared_image.jpg");
- FileOutputStream fos = null;
- try {
- fos = new FileOutputStream(file);
- fos.write(imageBytes);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- if (fos != null) {
- fos.close();
- }
- String photoUri = MediaStore.Images.Media.insertImage(
- getContentResolver(), file.getAbsolutePath(), null,
- null);
- Intent intent = new PlusShare.Builder(this)
- .setText(shareData.getMessage()).setType("image/jpeg")
- .setStream(Uri.parse(photoUri)).getIntent();
- startActivityForResult(intent, 103);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- // PlusShare.Builder share = new
- // PlusShare.Builder(this).setText(shareData.getMessage())
- // .
- }
- boolean continueShareImageWithFacebook = false;
- String cachedImageForFacebook = null;
- private void shareOnFacebookWithImage(final ShareData shareData) {
- NovalacLogger.logD("share image on facebook");
- if (FacebookDialog.canPresentShareDialog(this,
- FacebookDialog.ShareDialogFeature.PHOTOS)) {
- NovalacLogger.logD("can share on facebook");
- Collection<File> files = new ArrayList<File>();
- files.add(getFileFromBase64(shareData.getImage()));
- FacebookDialog shareDialog = new FacebookDialog.PhotoShareDialogBuilder(
- this).addPhotoFiles(files).build();
- uiHelper.trackPendingDialogCall(shareDialog.present());
- // FacebookDialog shareDialog = new
- // FacebookDialog.ShareDialogBuilder(this)
- // .setPicture(getImageUri(shareData.getImage()))
- // .setLink("http://www.novalac.net/")
- // .setDescription(shareData.getMessage()).build();
- // uiHelper.trackPendingDialogCall(shareDialog.present());
- } else {
- // UNABLE TO SHARE WITH IMAGE ON FACEBOOK WITHOUT INSTALLED FACEBOOK
- // APP
- // Session.openActiveSession(this, true, new StatusCallback() {
- //
- // @Override
- // public void call(Session session, SessionState state,
- // Exception exception) {
- //
- // continueShareImageWithFacebook = true;
- // cachedImageForFacebook = shareData.getImage();
- // // onSessionStateChange(session, state, exception);
- //
- // }
- // });
- //
- // NovalacLogger.logD("can not share on facebook");
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- NovalacLogger.logD("share my first 2");
- String result = String.format(URLstub, STUB_SHARE_MY_FIRST,
- 2);
- webView.loadUrl(result);
- }
- });
- }
- }
- private File getFileFromBase64(String base64Image) {
- byte[] imageBytes = Base64.decode(base64Image, Base64.DEFAULT);
- File path = Environment
- .getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
- File file = new File(path, "/" + "shared_image.jpg");
- // File file = new File("shared_image.jpg");
- FileOutputStream fos = null;
- try {
- fos = new FileOutputStream(file);
- fos.write(imageBytes);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- if (fos != null) {
- fos.close();
- }
- return file;
- } catch (IOException e) {
- e.printStackTrace();
- }
- return null;
- }
- }
- private String getImageUri(String base64Image) {
- byte[] imageBytes = Base64.decode(base64Image, Base64.DEFAULT);
- File path = Environment
- .getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
- File file = new File(path, "/" + "shared_image.jpg");
- // File file = new File("shared_image.jpg");
- FileOutputStream fos = null;
- try {
- fos = new FileOutputStream(file);
- fos.write(imageBytes);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- if (fos != null) {
- fos.close();
- }
- String photoUri = MediaStore.Images.Media.insertImage(
- getContentResolver(), file.getAbsolutePath(), null,
- null);
- return photoUri;
- } catch (IOException e) {
- e.printStackTrace();
- }
- return "";
- }
- }
- public class AndroidInterface {
- Context context;
- AndroidInterface(Context context) {
- this.context = context;
- }
- @JavascriptInterface
- public boolean setDatabaseItem(String key, String value) {
- SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
- editor.putString(key, value);
- return editor.commit();
- }
- @JavascriptInterface
- public String getDatabaseItem(String key) {
- SharedPreferences prefs = getPreferences(MODE_PRIVATE);
- String value = prefs.getString(key, "");
- if (value != null && !value.equals("")) {
- return value;
- }
- return null;
- }
- @JavascriptInterface
- public boolean removeDatabaseItem(String key) {
- SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
- editor.remove(key);
- return editor.commit();
- }
- @JavascriptInterface
- public void shareMyFirst(String json) {
- NovalacLogger.logD("share my first");
- try {
- ShareData shareData = new Gson()
- .fromJson(json, ShareData.class);
- NovalacLogger.logD("share my first with = "
- + shareData.getSocialNetwork());
- NovalacLogger.logD("image=" + shareData.getImage());
- String socialNetwork = shareData.getSocialNetwork();
- if (socialNetwork.equals("facebook")) {
- if (shareData.getImage().equals("")) {
- shareOnFacebook(shareData.getMessage());
- } else {
- shareOnFacebookWithImage(shareData);
- }
- } else if (socialNetwork.equals("twitter")) {
- shareOnTwitterWithImage(shareData);
- } else if (socialNetwork.equals("gplus")) {
- shareOnGPlusWithImage(shareData);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @JavascriptInterface
- public void exportUserData(String json) {
- // JSONObject jsonObject = null;
- // try {
- // jsonObject = new JSONObject(json);
- // NovalacLogger.logD("json object=" + jsonObject.toString());
- // } catch (JSONException e) {
- // e.printStackTrace();
- // }
- JsonParser parser = new JsonParser();
- JsonObject jsonObject = parser.parse(json).getAsJsonObject();
- // DocumentWrapper documentWrapper = new Gson().fromJson(json,
- // DocumentWrapper.class);
- ((NovalacApplication) getApplication()).getService().postDocument(
- // documentWrapper,
- jsonObject,
- new BaseCallback<DocumentResponseWrapper>() {
- @Override
- protected void onSuccess(DocumentResponseWrapper t,
- Response response) {
- String result = String.format(URLstub,
- STUB_EXPORT_USER_ADD, "1");
- NovalacLogger.logD("document=" + t.getDocument());
- webView.loadUrl(result);
- }
- @Override
- protected void onGenericError() {
- String result = String.format(URLstub,
- STUB_EXPORT_USER_ADD, "0");
- NovalacLogger.logD("generic error");
- webView.loadUrl(result);
- }
- @Override
- protected void onErrorMessage(String message) {
- NovalacLogger.logD("error=" + message);
- String result = String.format(URLstub,
- STUB_EXPORT_USER_ADD, "0");
- webView.loadUrl(result);
- }
- });
- }
- @JavascriptInterface
- public String importUser() {
- if (cachedUserData != null && !cachedUserData.equals("")) {
- String userData = cachedUserData;
- cachedUserData = null;
- return userData;
- } else {
- return "";
- }
- }
- @JavascriptInterface
- public void exportData(String object) {
- JSONObject jsonObject;
- try {
- jsonObject = new JSONObject(object);
- NovalacLogger.logD("DINO json Object=" + jsonObject.toString());
- ExportDataSource source = Sources
- .getExportDataSource(HomeActivity.this);
- source.setObject(new JSONObjectDataContainer(jsonObject));
- source.setInputFormat(Format.JSON);
- source.setErrorDeserializer(new NovalacErrorHandler());
- source.setSerializer(new JSONObjectSerializer());
- source.fetchAsync(new LoadListener() {
- @Override
- public void onError(ArrayList<Error> errors) {
- Loggy.data("onError");
- // Log.d("DARIO", "" + errors);
- for (int i = 0; i < errors.size(); i++) {
- NovalacLogger.logD("error=" + errors.get(i));
- }
- String content = String.format(URLstub,
- STUB_EXPORT_SEND, "0");
- webView.loadUrl(content);
- }
- @Override
- public void beforeLoad() {
- Loggy.data("beforeLoad()");
- }
- @Override
- public void afterLoad(DataContainer container) {
- NovalacLogger.logD("container=" + container);
- Loggy.data("afterLoad()");
- String content = String.format(URLstub,
- STUB_EXPORT_SEND, "1");
- webView.loadUrl(content);
- }
- });
- } catch (JSONException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- outState.putParcelable(CURRENT_PHOTO_URI, currentPhotoUri);
- super.onSaveInstanceState(outState);
- uiHelper.onSaveInstanceState(outState);
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- uiHelper.onDestroy();
- }
- @Override
- protected void onRestoreInstanceState(Bundle savedInstanceState) {
- currentPhotoUri = savedInstanceState.getParcelable(CURRENT_PHOTO_URI);
- super.onRestoreInstanceState(savedInstanceState);
- }
- // Facebook user logged in
- @Override
- public void onSuccess(String userId) {
- NovalacLogger.logD("facebook on success");
- if (continueShareImageWithFacebook) {
- NovalacLogger.logD("continue share="
- + continueShareImageWithFacebook);
- continueShareImageWithFacebook = false;
- // try {
- Bundle params = new Bundle();
- params.putString("access_token", Session.getActiveSession()
- .getAccessToken());
- params.putString("description", "description");
- params.putString("caption", "caption");
- params.putString("value", "value");
- // params.putP
- // Request request = new Request(Session.getActiveSession(),
- // "me/photos", params, com.facebook.HttpMethod.POST, new
- // Request.Callback() {
- //
- // @Override
- // public void onCompleted(com.facebook.Response response) {
- // NovalacLogger.logD("on new request completed=" +
- // response.getRawResponse());
- // }
- // });
- // request.executeAsync();
- WebDialog webDialog = new WebDialog.FeedDialogBuilder(
- HomeActivity.this, Session.getActiveSession())
- .setName("name").setDescription("description")
- .setLink("http://www.novalac.net/")
- // .setPicture("https://pbs.twimg.com/media/BuWdCspIQAAlfzN.jpg")
- .setOnCompleteListener(new OnCompleteListener() {
- @Override
- public void onComplete(Bundle values,
- FacebookException error) {
- cachedImageForFacebook = null;
- if (error != null) {
- error.printStackTrace();
- }
- }
- }).build();
- webDialog.show();
- // Request.newUploadPhotoRequest(Session.getActiveSession(),
- // getFileFromBase64(cachedImageForFacebook), new Request.Callback()
- // {
- //
- // @Override
- // public void onCompleted(com.facebook.Response response) {
- //
- // NovalacLogger.logD("" + response.getRawResponse());
- //
- // WebDialog webDialog = new WebDialog.FeedDialogBuilder(
- // HomeActivity.this, Session.getActiveSession()).setName("name")
- // .setDescription("description")
- // .setLink("http://www.novalac.net/")
- // .setPicture("https://www.dropbox.com/s/vosixwg5gb6qqjh/Screenshot%202014-08-18%2011.42.02.png")
- // .setOnCompleteListener(new OnCompleteListener() {
- //
- // @Override
- // public void onComplete(Bundle values, FacebookException error) {
- // cachedImageForFacebook = null;
- // error.printStackTrace();
- // }
- // })
- // .build();
- //
- // webDialog.show();
- //
- // }
- // }).executeAsync();
- // } catch (FileNotFoundException e) {
- // // TODO Auto-generated catch block
- // e.printStackTrace();
- // }
- return;
- } else {
- postLoginUser(userId, "facebook");
- }
- }
- // Facebook user login failed
- @Override
- public void onFailure() {
- NovalacLogger.logD("facebook on failure");
- //
- String result = String.format(URLstub, STUB_SOCIAL_LOGIN, "0");
- webView.loadUrl(result);
- }
- // G+ login
- @Override
- public void onConnectionFailed(ConnectionResult connectionResult) {
- // Could not connect to Google Play Services. The user needs to select an account,
- // grant permissions or resolve an error in order to sign in. Refer to the javadoc for
- // ConnectionResult to see possible error codes.
- if (connectionResult.hasResolution()) {
- mConnectionResult = connectionResult;
- try {
- mConnectionResult.startResolutionForResult(this,
- GOOGLE_PLUS_REQUEST_CODE);
- } catch (IntentSender.SendIntentException e) {
- e.printStackTrace();
- String result = String.format(URLstub, STUB_SOCIAL_LOGIN, "0");
- webView.loadUrl(result);
- }
- } else {
- String result = String.format(URLstub, STUB_SOCIAL_LOGIN, "0");
- webView.loadUrl(result);
- }
- }
- // G+ login
- @Override
- public void onConnected(Bundle connectionHint) {
- Plus.PeopleApi.loadVisible(mGoogleApiClient, null);
- if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
- Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
- if (currentPerson == null) {
- // not successful
- loginUnsuccessful();
- } else {
- // g+ login successful
- postLoginUser(currentPerson.getId(), "gplus");
- }
- } else {
- loginUnsuccessful();
- }
- }
- private void loginUnsuccessful() {
- String result = String.format(URLstub, STUB_SOCIAL_LOGIN, "0");
- webView.loadUrl(result);
- }
- @Override
- public void onConnectionSuspended(int cause) {
- // TODO Auto-generated method stub
- }
- }
Add Comment
Please, Sign In to add comment