Changeset View
Changeset View
Standalone View
Standalone View
src/it/reyboz/bustorino/middleware/GeneralActivity.java
package it.reyboz.bustorino.middleware; | package it.reyboz.bustorino.middleware; | ||||
import android.Manifest; | import android.Manifest; | ||||
import android.content.Context; | import android.content.Context; | ||||
import android.content.SharedPreferences; | import android.content.SharedPreferences; | ||||
import android.content.pm.PackageManager; | import android.content.pm.PackageManager; | ||||
import android.content.res.Resources; | |||||
import android.net.ConnectivityManager; | import android.net.ConnectivityManager; | ||||
import android.net.NetworkInfo; | import android.net.NetworkInfo; | ||||
import android.support.design.widget.Snackbar; | import com.google.android.material.snackbar.Snackbar; | ||||
import android.support.v4.app.ActivityCompat; | import androidx.core.app.ActivityCompat; | ||||
import android.support.v4.content.ContextCompat; | import androidx.core.content.ContextCompat; | ||||
import android.support.v7.app.AppCompatActivity; | import androidx.appcompat.app.AppCompatActivity; | ||||
import android.util.Log; | |||||
import android.view.View; | import android.view.View; | ||||
import android.view.inputmethod.InputMethodManager; | import android.view.inputmethod.InputMethodManager; | ||||
import android.widget.Toast; | |||||
import java.util.HashMap; | |||||
import it.reyboz.bustorino.R; | import it.reyboz.bustorino.R; | ||||
/** | /** | ||||
* Activity class that contains all the generally useful methods | * Activity class that contains all the generally useful methods | ||||
*/ | */ | ||||
public abstract class GeneralActivity extends AppCompatActivity { | public abstract class GeneralActivity extends AppCompatActivity { | ||||
final protected int PERMISSION_REQUEST_POSITION = 33; | final static protected int PERMISSION_REQUEST_POSITION = 33; | ||||
final static protected String LOCATION_PERMISSION_GIVEN = "loc_permission"; | |||||
final static protected int STORAGE_PERMISSION_REQ = 291; | |||||
final static protected int PERMISSION_OK = 0; | |||||
final static protected int PERMISSION_ASKING = 11; | |||||
final static protected int PERMISSION_NEG_CANNOT_ASK = -3; | |||||
final static private String DEBUG_TAG = "BusTO-GeneralAct"; | |||||
/* | |||||
* Permission stuff | |||||
*/ | |||||
protected HashMap<String,Runnable> permissionDoneRunnables = new HashMap<>(); | |||||
protected HashMap<String,Integer> permissionAsked = new HashMap<>(); | |||||
protected void setOption(String optionName, boolean value) { | protected void setOption(String optionName, boolean value) { | ||||
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); | SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); | ||||
editor.putBoolean(optionName, value); | editor.putBoolean(optionName, value); | ||||
editor.commit(); | editor.commit(); | ||||
} | } | ||||
protected boolean getOption(String optionName, boolean optDefault) { | protected boolean getOption(String optionName, boolean optDefault) { | ||||
SharedPreferences preferences = getPreferences(MODE_PRIVATE); | SharedPreferences preferences = getPreferences(MODE_PRIVATE); | ||||
return preferences.getBoolean(optionName, optDefault); | return preferences.getBoolean(optionName, optDefault); | ||||
} | } | ||||
protected SharedPreferences getMainSharedPreferences(){ | |||||
return getSharedPreferences(getString(R.string.mainSharedPreferences),MODE_PRIVATE); | |||||
} | |||||
public void hideKeyboard() { | public void hideKeyboard() { | ||||
View view = getCurrentFocus(); | View view = getCurrentFocus(); | ||||
if (view != null) { | if (view != null) { | ||||
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)) | ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)) | ||||
.hideSoftInputFromWindow(view.getWindowToken(), | .hideSoftInputFromWindow(view.getWindowToken(), | ||||
InputMethodManager.HIDE_NOT_ALWAYS); | InputMethodManager.HIDE_NOT_ALWAYS); | ||||
} | } | ||||
} | } | ||||
public boolean isConnected() { | public boolean isConnected() { | ||||
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); | ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); | ||||
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); | NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); | ||||
return networkInfo != null && networkInfo.isConnected(); | return networkInfo != null && networkInfo.isConnected(); | ||||
} | } | ||||
public abstract void showMessage(int messageID); | |||||
public abstract void showKeyboard(); | public void showToastMessage(int messageID, boolean short_lenght) { | ||||
final int length = short_lenght ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG; | |||||
Toast.makeText(getApplicationContext(), messageID, length).show(); | |||||
} | |||||
public void assertLocationPermissions() { | public void assertLocationPermissions() { | ||||
if(ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.ACCESS_FINE_LOCATION)!=PackageManager.PERMISSION_GRANTED){ | if(ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.ACCESS_FINE_LOCATION)!=PackageManager.PERMISSION_GRANTED){ | ||||
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_REQUEST_POSITION); | ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_REQUEST_POSITION); | ||||
} | } | ||||
} | } | ||||
public int askForPermissionIfNeeded(String permission, int requestID){ | |||||
if(ContextCompat.checkSelfPermission(getApplicationContext(),permission)==PackageManager.PERMISSION_GRANTED){ | |||||
return PERMISSION_OK; | |||||
} | |||||
//need to ask for the permission | |||||
//consider scenario when we have already asked for permission | |||||
boolean alreadyAsked = false; | |||||
Integer num_trials = 0; | |||||
synchronized (this){ | |||||
if (permissionAsked.containsKey(permission)){ | |||||
num_trials = permissionAsked.get(permission); | |||||
if (num_trials != null && num_trials > 3) | |||||
alreadyAsked = true; | |||||
} | |||||
} | |||||
Log.d(DEBUG_TAG,"Already asked for permission: "+permission+" -> "+num_trials); | |||||
if(!alreadyAsked){ | |||||
ActivityCompat.requestPermissions(this,new String[]{permission}, requestID); | |||||
synchronized (this){ | |||||
if (num_trials!=null){ | |||||
permissionAsked.put(permission, num_trials+1); | |||||
} | |||||
} | |||||
return PERMISSION_ASKING; | |||||
} else { | |||||
return PERMISSION_NEG_CANNOT_ASK; | |||||
} | |||||
} | |||||
public void createSnackbar(int ViewID, String message,int duration){ | public void createSnackbar(int ViewID, String message,int duration){ | ||||
Snackbar.make(findViewById(ViewID),message,duration); | Snackbar.make(findViewById(ViewID),message,duration); | ||||
} | } | ||||
/* | /* | ||||
METHOD THAT MIGHT BE USEFUL LATER | METHOD THAT MIGHT BE USEFUL LATER | ||||
public void assertPermissions(String[] permissions){ | public void assertPermissions(String[] permissions){ | ||||
ArrayList<String> permissionstoRequest = new ArrayList<>(); | ArrayList<String> permissionstoRequest = new ArrayList<>(); | ||||
for(int i=0;i<permissions.length;i++){ | for(int i=0;i<permissions.length;i++){ | ||||
if(ContextCompat.checkSelfPermission(getApplicationContext(),permissions[i])!=PackageManager.PERMISSION_GRANTED){ | if(ContextCompat.checkSelfPermission(getApplicationContext(),permissions[i])!=PackageManager.PERMISSION_GRANTED){ | ||||
permissionstoRequest.add(permissions[i]); | permissionstoRequest.add(permissions[i]); | ||||
} | } | ||||
} | } | ||||
ActivityCompat.requestPermissions(this,permissionstoRequest.toArray(new String[permissionstoRequest])); | ActivityCompat.requestPermissions(this,permissionstoRequest.toArray(new String[permissionstoRequest])); | ||||
} | } | ||||
*/ | */ | ||||
} | } |
Public contents are in Creative Commons Attribution-ShareAlike 4.0 (CC-BY-SA) or GNU Free Documentation License (at your option) unless otherwise noted. · Contact / Register