From edb15e2b65c3b32a740f6da03635615af8ac9f0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Thie=C3=9Fen?= Date: Fri, 12 Feb 2016 10:06:54 +0100 Subject: [PATCH] =?UTF-8?q?@11.02.16=20Dennis=20Thie=C3=9Fen:=202.0.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../org/deke/risk/riskahead/MapsActivity.java | 44 +++++++++++++++++-- .../fragment/GooglePlusButtonFragment.java | 44 +++++++++++++++++-- .../risk/riskahead/helper/BaseActivity.java | 32 ++++++++++++-- .../riskahead/helper/NotificationService.java | 14 +++--- .../risk/riskahead/helper/SessionManager.java | 13 +++++- 6 files changed, 129 insertions(+), 22 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5cc2cc7..131967d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,8 +19,8 @@ android { applicationId "org.deke.risk.riskahead" minSdkVersion 15 targetSdkVersion 23 - versionCode 28 - versionName "2.0" + versionCode 29 + versionName "2.0.1" } buildTypes { release { diff --git a/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java b/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java index e828c0e..bdea35e 100644 --- a/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/MapsActivity.java @@ -4,12 +4,14 @@ import android.app.SearchManager; import android.app.SearchableInfo; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.content.res.ColorStateList; import android.database.Cursor; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; +import android.support.v4.app.ActivityCompat; import android.support.v4.app.LoaderManager; import android.support.v4.content.ContextCompat; import android.support.v4.content.CursorLoader; @@ -39,6 +41,8 @@ import com.google.android.gms.maps.model.Marker; import com.google.android.gms.maps.model.MarkerOptions; import com.google.android.gms.maps.model.TileOverlay; import com.google.android.gms.maps.model.TileOverlayOptions; +import com.google.android.gms.plus.Plus; +import com.google.android.gms.plus.model.people.Person; import com.google.maps.android.clustering.Cluster; import com.google.maps.android.clustering.ClusterManager; import com.google.maps.android.heatmaps.HeatmapTileProvider; @@ -76,6 +80,7 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa private static final int DEFAULT_ZOOM_LEVEL = 14; private static final int THRESHOLD_ZOOM_LEVEL = 10; + private static final int MY_PERMISSIONS_REQUEST_LOCATION = 12; private Double PRELOAD_PERCENTAGE = 0.3; private int MIN_ZOOM_LEVEL = 9; @@ -108,9 +113,10 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa super.onCreate(savedInstanceState); userHasToBeLoggedIn(); - if(session.getSubsPremium()){ + + if (session.getSubsPremium()) { MIN_ZOOM_LEVEL = 7; - }else{ + } else { MIN_ZOOM_LEVEL = 9; } @@ -135,9 +141,41 @@ public class MapsActivity extends BaseActivity implements LoaderManager.LoaderCa System.gc(); } + @Override + public void onRequestPermissionsResult(int requestCode, + String permissions[], int[] grantResults) { + switch (requestCode) { + case MY_PERMISSIONS_REQUEST_LOCATION: { + // If request is cancelled, the result arrays are empty. + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + + try{ + mMap.setMyLocationEnabled(true); + }catch(SecurityException e){ + + } + + + } else { + + } + return; + } + + // other 'case' lines to check for other + // permissions this app might request + } + } + + private void initMap() { mMap.getUiSettings().setZoomControlsEnabled(true); - mMap.setMyLocationEnabled(true); + if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(this,new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION,android.Manifest.permission.ACCESS_COARSE_LOCATION},1); + }else{ + mMap.setMyLocationEnabled(true); + } + mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { @Override diff --git a/app/src/main/java/org/deke/risk/riskahead/fragment/GooglePlusButtonFragment.java b/app/src/main/java/org/deke/risk/riskahead/fragment/GooglePlusButtonFragment.java index bf740eb..7e87034 100644 --- a/app/src/main/java/org/deke/risk/riskahead/fragment/GooglePlusButtonFragment.java +++ b/app/src/main/java/org/deke/risk/riskahead/fragment/GooglePlusButtonFragment.java @@ -1,11 +1,14 @@ package org.deke.risk.riskahead.fragment; +import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.IntentSender; +import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; +import android.support.v4.app.ActivityCompat; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; @@ -36,6 +39,7 @@ public class GooglePlusButtonFragment extends Fragment implements GoogleApiClien public static final int RC_SIGN_IN = 0; private static final String TAG = "MainActivity"; + private static final int MY_PERMISSIONS_REQUEST_ACCOUNTS = 32; private GoogleApiClient mGoogleApiClient; @@ -78,11 +82,43 @@ public class GooglePlusButtonFragment extends Fragment implements GoogleApiClien } private void performClickAction() { - if(mGoogleApiClient.isConnected()){ - Person currentPerson = getProfileInformation(); - ((LoginActivity) getActivity()).handleSocialMediaLogin(currentPerson.getId(),"google",currentPerson.getDisplayName(),Plus.AccountApi.getAccountName(mGoogleApiClient)); + + if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.GET_ACCOUNTS}, MY_PERMISSIONS_REQUEST_ACCOUNTS); + }else{ - signInWithGplus(); + if(mGoogleApiClient.isConnected()){ + Person currentPerson = getProfileInformation(); + ((LoginActivity) getActivity()).handleSocialMediaLogin(currentPerson.getId(),"google",currentPerson.getDisplayName(),Plus.AccountApi.getAccountName(mGoogleApiClient)); + }else{ + signInWithGplus(); + } + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, + String permissions[], int[] grantResults) { + switch (requestCode) { + case MY_PERMISSIONS_REQUEST_ACCOUNTS: { + // If request is cancelled, the result arrays are empty. + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + + if(mGoogleApiClient.isConnected()){ + Person currentPerson = getProfileInformation(); + ((LoginActivity) getActivity()).handleSocialMediaLogin(currentPerson.getId(),"google",currentPerson.getDisplayName(),Plus.AccountApi.getAccountName(mGoogleApiClient)); + }else{ + signInWithGplus(); + } + + } else { + + } + return; + } + + // other 'case' lines to check for other + // permissions this app might request } } diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java b/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java index 0ae809f..e5cae43 100644 --- a/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java +++ b/app/src/main/java/org/deke/risk/riskahead/helper/BaseActivity.java @@ -1,5 +1,6 @@ package org.deke.risk.riskahead.helper; +import android.Manifest; import android.app.ActivityManager; import android.app.AlarmManager; import android.app.AlertDialog; @@ -14,10 +15,12 @@ import android.content.pm.PackageManager; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.drawable.ColorDrawable; +import android.location.LocationManager; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.os.Bundle; +import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; @@ -43,6 +46,8 @@ import com.android.volley.toolbox.StringRequest; import com.google.android.gms.ads.AdListener; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.InterstitialAd; +import com.google.android.gms.plus.Plus; +import com.google.android.gms.plus.model.people.Person; import com.mikepenz.google_material_typeface_library.GoogleMaterial; import com.mikepenz.materialdrawer.AccountHeader; import com.mikepenz.materialdrawer.AccountHeaderBuilder; @@ -126,6 +131,7 @@ public abstract class BaseActivity extends AppCompatActivity { } else if (onStartCount == 1) { onStartCount++; + onStartCount++; } } @@ -137,6 +143,7 @@ public abstract class BaseActivity extends AppCompatActivity { //overridePendingTransition(R.anim.fade_in_anim, R.anim.fade_out_anim); //overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right); + onStartCount = 1; if (savedInstanceState == null) // 1st time { @@ -161,7 +168,13 @@ public abstract class BaseActivity extends AppCompatActivity { - if(!isMyNotificationServiceRunning()){ + if(!isMyNotificationServiceRunning() && session.getNotificationEnabled()){ + + if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION},1); + return; + } + Log.d(TAG,"onCreate: NotificationService not running. Starting service..."); Intent wtdSServiceIntent = new Intent(this, NotificationService.class); @@ -367,17 +380,30 @@ public abstract class BaseActivity extends AppCompatActivity { } public void showAd(){ + if(System.currentTimeMillis() == 0) session.setLastAddShown(System.currentTimeMillis()); + + if(System.currentTimeMillis() > session.getLastAddShown()+120000){ + Log.d(TAG, "SHOW ADD!"); if (mInterstitialAd.isLoaded()) { Log.d(TAG, "Loading Add..."); if(!(session.getSubsNoAds() || session.getSubsPremium())){ - mInterstitialAd.show(); + + + mInterstitialAd.show(); + session.setLastAddShown(System.currentTimeMillis()); + + }else{ Log.d(TAG,"Add not shown because user has status."); } } + }else{ + Log.d(TAG, "SHOW NO ADD ( TIME NOT OUT ) !"); + } } public void isNetworkAvailable() { + ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); if(activeNetworkInfo == null){ @@ -402,7 +428,7 @@ public abstract class BaseActivity extends AppCompatActivity { public void handleVolleyErrorResponse() { showMessage(getString(R.string.errormsg_couldnotretrieve)); - logoutUser(); + //logoutUser(); } public void logout() { diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/NotificationService.java b/app/src/main/java/org/deke/risk/riskahead/helper/NotificationService.java index 3c999af..a8ff2d2 100644 --- a/app/src/main/java/org/deke/risk/riskahead/helper/NotificationService.java +++ b/app/src/main/java/org/deke/risk/riskahead/helper/NotificationService.java @@ -69,17 +69,13 @@ public class NotificationService extends Service { locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); LocationListener locationListener = new MyLocationListener(); + if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - // TODO: Consider calling - // ActivityCompat#requestPermissions - // here to request the missing permissions, and then overriding - // public void onRequestPermissionsResult(int requestCode, String[] permissions, - // int[] grantResults) - // to handle the case where the user grants the permission. See the documentation - // for ActivityCompat#requestPermissions for more details. - return; + //ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION},1); + }else{ + locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, 10, locationListener); } - locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, 10, locationListener); + Log.d(TAG, "Service Created. Starting notification task..."); mNotifyTask.run(); diff --git a/app/src/main/java/org/deke/risk/riskahead/helper/SessionManager.java b/app/src/main/java/org/deke/risk/riskahead/helper/SessionManager.java index e1066f4..c6f25d7 100644 --- a/app/src/main/java/org/deke/risk/riskahead/helper/SessionManager.java +++ b/app/src/main/java/org/deke/risk/riskahead/helper/SessionManager.java @@ -59,6 +59,8 @@ public class SessionManager { public static final String KEY_SUBS_NOADS = "subs_noads"; public static final String KEY_SUBS_PREMIUM = "subs_premium"; + public static final String KEY_LAST_ADD_SHOWN = "lastaddschown"; + public SessionManager(Context context) { this._context = context; status = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); @@ -95,6 +97,15 @@ public class SessionManager { return status.getBoolean(KEY_NOTIFY_GPS, true); } + public void setLastAddShown(Long time){ + statusEditor.putLong(KEY_LAST_ADD_SHOWN, time); + statusEditor.apply(); + } + + public Long getLastAddShown(){ + return status.getLong(KEY_LAST_ADD_SHOWN, 0); + } + public void setLastNotification(String time){ statusEditor.putString(KEY_LAST_NOTIFICATION, time); statusEditor.apply(); @@ -129,7 +140,7 @@ public class SessionManager { } public Boolean getNotificationEnabled(){ - return status.getBoolean(KEY_NOTIFY_ENABLED, true); + return status.getBoolean(KEY_NOTIFY_ENABLED, false); } public void setSubsNoAds(boolean isEnabled){