mirror of
https://github.com/oliexdev/openScale.git
synced 2025-08-23 16:53:04 +02:00
try calling method again if permission was granted
This commit is contained in:
@@ -70,8 +70,6 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
private static int bluetoothStatusIcon = R.drawable.ic_bluetooth_disabled;
|
private static int bluetoothStatusIcon = R.drawable.ic_bluetooth_disabled;
|
||||||
private static MenuItem bluetoothStatus;
|
private static MenuItem bluetoothStatus;
|
||||||
|
|
||||||
private boolean permGrantedCoarseLocation;
|
|
||||||
|
|
||||||
private Fragment currentFragment;
|
private Fragment currentFragment;
|
||||||
private DrawerLayout drawerLayout;
|
private DrawerLayout drawerLayout;
|
||||||
private Toolbar toolbar;
|
private Toolbar toolbar;
|
||||||
@@ -96,7 +94,6 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
setContentView(R.layout.activity_main);
|
setContentView(R.layout.activity_main);
|
||||||
|
|
||||||
currentFragment = null;
|
currentFragment = null;
|
||||||
permGrantedCoarseLocation = false;
|
|
||||||
|
|
||||||
// Set a Toolbar to replace the ActionBar.
|
// Set a Toolbar to replace the ActionBar.
|
||||||
toolbar = (Toolbar) findViewById(R.id.toolbar);
|
toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||||
@@ -387,6 +384,8 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
String deviceName = prefs.getString("btDeviceName", "-");
|
String deviceName = prefs.getString("btDeviceName", "-");
|
||||||
|
|
||||||
|
boolean permGrantedCoarseLocation = false;
|
||||||
|
|
||||||
// Check if Bluetooth 4.x is available
|
// Check if Bluetooth 4.x is available
|
||||||
if (deviceName != "openScale_MCU") {
|
if (deviceName != "openScale_MCU") {
|
||||||
permGrantedCoarseLocation = PermissionHelper.requestBluetoothPermission(this, false);
|
permGrantedCoarseLocation = PermissionHelper.requestBluetoothPermission(this, false);
|
||||||
@@ -407,9 +406,6 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
if (!OpenScale.getInstance(getApplicationContext()).startSearchingForBluetooth(deviceName, callbackBtHandler)) {
|
if (!OpenScale.getInstance(getApplicationContext()).startSearchingForBluetooth(deviceName, callbackBtHandler)) {
|
||||||
Toast.makeText(getApplicationContext(), deviceName + " " + getResources().getString(R.string.label_bt_device_no_support), Toast.LENGTH_SHORT).show();
|
Toast.makeText(getApplicationContext(), deviceName + " " + getResources().getString(R.string.label_bt_device_no_support), Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
setBluetoothStatusIcon(R.drawable.ic_bluetooth_disabled);
|
|
||||||
Toast.makeText(getApplicationContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -467,15 +463,17 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
||||||
switch (requestCode) {
|
switch (requestCode) {
|
||||||
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION: {
|
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION:
|
||||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
permGrantedCoarseLocation = true;
|
invokeSearchBluetoothDevice();
|
||||||
} else {
|
} else {
|
||||||
permGrantedCoarseLocation = false;
|
setBluetoothStatusIcon(R.drawable.ic_bluetooth_disabled);
|
||||||
|
Toast.makeText(getApplicationContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
return;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -87,9 +87,6 @@ public class TableFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
private SharedPreferences prefs;
|
private SharedPreferences prefs;
|
||||||
private LinearLayout subpageView;
|
private LinearLayout subpageView;
|
||||||
|
|
||||||
private boolean permGrantedReadAccess;
|
|
||||||
private boolean permGrantedWriteAccess;
|
|
||||||
|
|
||||||
private ArrayList <MeasurementView> measurementsList;
|
private ArrayList <MeasurementView> measurementsList;
|
||||||
|
|
||||||
private int selectedSubpageNr;
|
private int selectedSubpageNr;
|
||||||
@@ -143,9 +140,6 @@ public class TableFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
selectedSubpageNr = savedInstanceState.getInt(SELECTED_SUBPAGE_NR_KEY);
|
selectedSubpageNr = savedInstanceState.getInt(SELECTED_SUBPAGE_NR_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
permGrantedReadAccess = false;
|
|
||||||
permGrantedWriteAccess = false;
|
|
||||||
|
|
||||||
OpenScale.getInstance(getContext()).registerFragment(this);
|
OpenScale.getInstance(getContext()).registerFragment(this);
|
||||||
|
|
||||||
return tableView;
|
return tableView;
|
||||||
@@ -297,115 +291,50 @@ public class TableFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
private class onClickListenerImport implements View.OnClickListener {
|
private class onClickListenerImport implements View.OnClickListener {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
if (PermissionHelper.requestReadPermission(getActivity())) {
|
||||||
permGrantedReadAccess = PermissionHelper.requestReadPermission(getActivity());
|
importTable();
|
||||||
|
|
||||||
if (!permGrantedReadAccess) {
|
|
||||||
Toast.makeText(getContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int selectedUserId = OpenScale.getInstance(getContext()).getSelectedScaleUserId();
|
|
||||||
|
|
||||||
if (selectedUserId == -1)
|
|
||||||
{
|
|
||||||
AlertDialog.Builder infoDialog = new AlertDialog.Builder(v.getContext());
|
|
||||||
|
|
||||||
infoDialog.setMessage(getResources().getString(R.string.info_no_selected_user));
|
|
||||||
|
|
||||||
infoDialog.setPositiveButton(getResources().getString(R.string.label_ok), null);
|
|
||||||
|
|
||||||
infoDialog.show();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AlertDialog.Builder filenameDialog = new AlertDialog.Builder(getActivity());
|
|
||||||
|
|
||||||
filenameDialog.setTitle(getResources().getString(R.string.info_set_filename) + " /sdcard ...");
|
|
||||||
|
|
||||||
String exportFilename = prefs.getString("exportFilename", "/openScale_data_" + OpenScale.getInstance(getContext()).getSelectedScaleUser().getUserName() + ".csv");
|
|
||||||
|
|
||||||
final EditText txtFilename = new EditText(tableView.getContext());
|
|
||||||
txtFilename.setText(exportFilename);
|
|
||||||
|
|
||||||
filenameDialog.setView(txtFilename);
|
|
||||||
|
|
||||||
filenameDialog.setPositiveButton(getResources().getString(R.string.label_ok), new DialogInterface.OnClickListener() {
|
|
||||||
public void onClick(DialogInterface dialog, int id) {
|
|
||||||
OpenScale.getInstance(getContext()).importData(Environment.getExternalStorageDirectory().getPath() + txtFilename.getText().toString());
|
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(tableView.getContext());
|
|
||||||
prefs.edit().putString("exportFilename", txtFilename.getText().toString()).commit();
|
|
||||||
updateOnView(OpenScale.getInstance(getContext()).getScaleMeasurementList());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
filenameDialog.setNegativeButton(getResources().getString(R.string.label_cancel), new DialogInterface.OnClickListener() {
|
|
||||||
public void onClick(DialogInterface dialog, int id) {
|
|
||||||
dialog.dismiss();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
filenameDialog.show();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class onClickListenerExport implements View.OnClickListener {
|
private void importTable() {
|
||||||
@Override
|
int selectedUserId = OpenScale.getInstance(getContext()).getSelectedScaleUserId();
|
||||||
public void onClick(View v) {
|
|
||||||
|
|
||||||
permGrantedWriteAccess = PermissionHelper.requestWritePermission(getActivity());
|
if (selectedUserId == -1)
|
||||||
|
{
|
||||||
|
AlertDialog.Builder infoDialog = new AlertDialog.Builder(getContext());
|
||||||
|
|
||||||
if (!permGrantedWriteAccess) {
|
infoDialog.setMessage(getResources().getString(R.string.info_no_selected_user));
|
||||||
Toast.makeText(getContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
infoDialog.setPositiveButton(getResources().getString(R.string.label_ok), null);
|
||||||
|
|
||||||
|
infoDialog.show();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
AlertDialog.Builder filenameDialog = new AlertDialog.Builder(getActivity());
|
AlertDialog.Builder filenameDialog = new AlertDialog.Builder(getActivity());
|
||||||
|
|
||||||
filenameDialog.setTitle(getResources().getString(R.string.info_set_filename) + " " + Environment.getExternalStorageDirectory().getPath());
|
filenameDialog.setTitle(getResources().getString(R.string.info_set_filename) + " /sdcard ...");
|
||||||
|
|
||||||
final ScaleUser selectedScaleUser = OpenScale.getInstance(getContext()).getSelectedScaleUser();
|
String exportFilename = prefs.getString("exportFilename", "/openScale_data_" + OpenScale.getInstance(getContext()).getSelectedScaleUser().getUserName() + ".csv");
|
||||||
String exportFilename = prefs.getString("exportFilename" + selectedScaleUser.getId(), "openScale_data_" + selectedScaleUser.getUserName() + ".csv");
|
|
||||||
|
|
||||||
final EditText txtFilename = new EditText(tableView.getContext());
|
final EditText txtFilename = new EditText(tableView.getContext());
|
||||||
txtFilename.setText(exportFilename);
|
txtFilename.setText(exportFilename);
|
||||||
|
|
||||||
filenameDialog.setView(txtFilename);
|
filenameDialog.setView(txtFilename);
|
||||||
|
|
||||||
filenameDialog.setPositiveButton(getResources().getString(R.string.label_export), new DialogInterface.OnClickListener() {
|
filenameDialog.setPositiveButton(getResources().getString(R.string.label_ok), new DialogInterface.OnClickListener() {
|
||||||
public void onClick(DialogInterface dialog, int id) {
|
public void onClick(DialogInterface dialog, int id) {
|
||||||
String fullPath = Environment.getExternalStorageDirectory().getPath() + "/" + txtFilename.getText().toString();
|
OpenScale.getInstance(getContext()).importData(Environment.getExternalStorageDirectory().getPath() + txtFilename.getText().toString());
|
||||||
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(tableView.getContext());
|
||||||
if (OpenScale.getInstance(getContext()).exportData(fullPath)) {
|
prefs.edit().putString("exportFilename", txtFilename.getText().toString()).commit();
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(tableView.getContext());
|
updateOnView(OpenScale.getInstance(getContext()).getScaleMeasurementList());
|
||||||
prefs.edit().putString("exportFilename" + selectedScaleUser.getId(), txtFilename.getText().toString()).commit();
|
|
||||||
Toast.makeText(getContext(), getResources().getString(R.string.info_data_exported) + " " + fullPath, Toast.LENGTH_SHORT).show();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
filenameDialog.setNeutralButton(getResources().getString(R.string.label_share), new DialogInterface.OnClickListener() {
|
filenameDialog.setNegativeButton(getResources().getString(R.string.label_cancel), new DialogInterface.OnClickListener() {
|
||||||
public void onClick(DialogInterface dialog, int id) {
|
public void onClick(DialogInterface dialog, int id) {
|
||||||
String fullPath = Environment.getExternalStorageDirectory().getPath() + "/tmp/" + txtFilename.getText().toString();
|
dialog.dismiss();
|
||||||
|
|
||||||
if (!OpenScale.getInstance(getContext()).exportData(fullPath)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Intent intentShareFile = new Intent(Intent.ACTION_SEND);
|
|
||||||
File shareFile = new File(fullPath);
|
|
||||||
|
|
||||||
if(shareFile.exists()) {
|
|
||||||
intentShareFile.setType("text/comma-separated-values");
|
|
||||||
intentShareFile.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+fullPath));
|
|
||||||
|
|
||||||
intentShareFile.putExtra(Intent.EXTRA_SUBJECT, "openScale export csv file");
|
|
||||||
intentShareFile.putExtra(Intent.EXTRA_TEXT, txtFilename.getText().toString());
|
|
||||||
|
|
||||||
startActivity(Intent.createChooser(intentShareFile, getResources().getString(R.string.label_share)));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -414,26 +343,87 @@ public class TableFragment extends Fragment implements FragmentUpdateListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class onClickListenerExport implements View.OnClickListener {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
if (PermissionHelper.requestWritePermission(getActivity())) {
|
||||||
|
exportTable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void exportTable() {
|
||||||
|
AlertDialog.Builder filenameDialog = new AlertDialog.Builder(getActivity());
|
||||||
|
|
||||||
|
filenameDialog.setTitle(getResources().getString(R.string.info_set_filename) + " " + Environment.getExternalStorageDirectory().getPath());
|
||||||
|
|
||||||
|
final ScaleUser selectedScaleUser = OpenScale.getInstance(getContext()).getSelectedScaleUser();
|
||||||
|
String exportFilename = prefs.getString("exportFilename" + selectedScaleUser.getId(), "openScale_data_" + selectedScaleUser.getUserName() + ".csv");
|
||||||
|
|
||||||
|
final EditText txtFilename = new EditText(tableView.getContext());
|
||||||
|
txtFilename.setText(exportFilename);
|
||||||
|
|
||||||
|
filenameDialog.setView(txtFilename);
|
||||||
|
|
||||||
|
filenameDialog.setPositiveButton(getResources().getString(R.string.label_export), new DialogInterface.OnClickListener() {
|
||||||
|
public void onClick(DialogInterface dialog, int id) {
|
||||||
|
String fullPath = Environment.getExternalStorageDirectory().getPath() + "/" + txtFilename.getText().toString();
|
||||||
|
|
||||||
|
if (OpenScale.getInstance(getContext()).exportData(fullPath)) {
|
||||||
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(tableView.getContext());
|
||||||
|
prefs.edit().putString("exportFilename" + selectedScaleUser.getId(), txtFilename.getText().toString()).commit();
|
||||||
|
Toast.makeText(getContext(), getResources().getString(R.string.info_data_exported) + " " + fullPath, Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
filenameDialog.setNeutralButton(getResources().getString(R.string.label_share), new DialogInterface.OnClickListener() {
|
||||||
|
public void onClick(DialogInterface dialog, int id) {
|
||||||
|
String fullPath = Environment.getExternalStorageDirectory().getPath() + "/tmp/" + txtFilename.getText().toString();
|
||||||
|
|
||||||
|
if (!OpenScale.getInstance(getContext()).exportData(fullPath)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Intent intentShareFile = new Intent(Intent.ACTION_SEND);
|
||||||
|
File shareFile = new File(fullPath);
|
||||||
|
|
||||||
|
if(shareFile.exists()) {
|
||||||
|
intentShareFile.setType("text/comma-separated-values");
|
||||||
|
intentShareFile.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+fullPath));
|
||||||
|
|
||||||
|
intentShareFile.putExtra(Intent.EXTRA_SUBJECT, "openScale export csv file");
|
||||||
|
intentShareFile.putExtra(Intent.EXTRA_TEXT, txtFilename.getText().toString());
|
||||||
|
|
||||||
|
startActivity(Intent.createChooser(intentShareFile, getResources().getString(R.string.label_share)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
filenameDialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
||||||
switch (requestCode) {
|
switch (requestCode) {
|
||||||
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_READ_STORAGE: {
|
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_READ_STORAGE:
|
||||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
permGrantedReadAccess = true;
|
importTable();
|
||||||
} else {
|
} else {
|
||||||
permGrantedReadAccess = false;
|
Toast.makeText(getContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
return;
|
break;
|
||||||
}
|
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_WRITE_STORAGE:
|
||||||
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_WRITE_STORAGE: {
|
|
||||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
permGrantedWriteAccess = true;
|
exportTable();
|
||||||
} else {
|
} else {
|
||||||
permGrantedWriteAccess = false;
|
Toast.makeText(getContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
return;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
private class onClickListenerMoveSubpageLeft implements View.OnClickListener {
|
private class onClickListenerMoveSubpageLeft implements View.OnClickListener {
|
||||||
|
@@ -45,9 +45,6 @@ public class BackupPreferences extends PreferenceFragment {
|
|||||||
private static final String PREFERENCE_KEY_IMPORT_BACKUP = "importBackup";
|
private static final String PREFERENCE_KEY_IMPORT_BACKUP = "importBackup";
|
||||||
private static final String PREFERENCE_KEY_EXPORT_BACKUP = "exportBackup";
|
private static final String PREFERENCE_KEY_EXPORT_BACKUP = "exportBackup";
|
||||||
|
|
||||||
private boolean permGrantedReadAccess;
|
|
||||||
private boolean permGrantedWriteAccess;
|
|
||||||
|
|
||||||
private Preference importBackup;
|
private Preference importBackup;
|
||||||
private Preference exportBackup;
|
private Preference exportBackup;
|
||||||
|
|
||||||
@@ -63,9 +60,6 @@ public class BackupPreferences extends PreferenceFragment {
|
|||||||
exportBackup = (Preference) findPreference(PREFERENCE_KEY_EXPORT_BACKUP);
|
exportBackup = (Preference) findPreference(PREFERENCE_KEY_EXPORT_BACKUP);
|
||||||
exportBackup.setOnPreferenceClickListener(new onClickListenerExportBackup());
|
exportBackup.setOnPreferenceClickListener(new onClickListenerExportBackup());
|
||||||
|
|
||||||
permGrantedReadAccess = false;
|
|
||||||
permGrantedWriteAccess = false;
|
|
||||||
|
|
||||||
initSummary(getPreferenceScreen());
|
initSummary(getPreferenceScreen());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,18 +116,8 @@ public class BackupPreferences extends PreferenceFragment {
|
|||||||
private class onClickListenerImportBackup implements Preference.OnPreferenceClickListener {
|
private class onClickListenerImportBackup implements Preference.OnPreferenceClickListener {
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceClick(Preference preference) {
|
public boolean onPreferenceClick(Preference preference) {
|
||||||
File exportDir = new File(Environment.getExternalStorageDirectory(), PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()).getString("exportDir", "openScale Backup"));
|
if (PermissionHelper.requestReadPermission(getActivity())) {
|
||||||
|
importBackup();
|
||||||
importBackup("openScale.db", exportDir);
|
|
||||||
|
|
||||||
OpenScale openScale = OpenScale.getInstance(getActivity().getApplicationContext());
|
|
||||||
openScale.reopenDatabase();
|
|
||||||
|
|
||||||
List<ScaleUser> scaleUserList = openScale.getScaleUserList();
|
|
||||||
|
|
||||||
if (!scaleUserList.isEmpty()) {
|
|
||||||
openScale.selectScaleUser(scaleUserList.get(0).getId());
|
|
||||||
openScale.updateScaleData();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -143,21 +127,18 @@ public class BackupPreferences extends PreferenceFragment {
|
|||||||
private class onClickListenerExportBackup implements Preference.OnPreferenceClickListener {
|
private class onClickListenerExportBackup implements Preference.OnPreferenceClickListener {
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceClick(Preference preference) {
|
public boolean onPreferenceClick(Preference preference) {
|
||||||
File exportDir = new File(Environment.getExternalStorageDirectory(), PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()).getString("exportDir", "openScale Backup"));
|
if (PermissionHelper.requestWritePermission(getActivity())) {
|
||||||
|
exportBackup();
|
||||||
exportBackup("openScale.db", exportDir);
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean importBackup(String databaseName, File exportDir) {
|
private boolean importBackup() {
|
||||||
permGrantedReadAccess = PermissionHelper.requestReadPermission(getActivity());
|
File exportDir = new File(Environment.getExternalStorageDirectory(), PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()).getString("exportDir", "openScale Backup"));
|
||||||
|
|
||||||
if (!permGrantedReadAccess) {
|
String databaseName = "openScale.db";
|
||||||
Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isExternalStoragePresent())
|
if (!isExternalStoragePresent())
|
||||||
return false;
|
return false;
|
||||||
@@ -179,16 +160,23 @@ public class BackupPreferences extends PreferenceFragment {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OpenScale openScale = OpenScale.getInstance(getActivity().getApplicationContext());
|
||||||
|
openScale.reopenDatabase();
|
||||||
|
|
||||||
|
List<ScaleUser> scaleUserList = openScale.getScaleUserList();
|
||||||
|
|
||||||
|
if (!scaleUserList.isEmpty()) {
|
||||||
|
openScale.selectScaleUser(scaleUserList.get(0).getId());
|
||||||
|
openScale.updateScaleData();
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean exportBackup(String databaseName, File exportDir) {
|
private boolean exportBackup() {
|
||||||
permGrantedWriteAccess = PermissionHelper.requestWritePermission(getActivity());
|
File exportDir = new File(Environment.getExternalStorageDirectory(), PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()).getString("exportDir", "openScale Backup"));
|
||||||
|
|
||||||
if (!permGrantedWriteAccess) {
|
String databaseName = "openScale.db";
|
||||||
Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isExternalStoragePresent())
|
if (!isExternalStoragePresent())
|
||||||
return false;
|
return false;
|
||||||
@@ -233,22 +221,22 @@ public class BackupPreferences extends PreferenceFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
||||||
switch (requestCode) {
|
switch (requestCode) {
|
||||||
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_READ_STORAGE: {
|
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_READ_STORAGE:
|
||||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
permGrantedReadAccess = true;
|
importBackup();
|
||||||
} else {
|
} else {
|
||||||
permGrantedReadAccess = false;
|
Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
return;
|
break;
|
||||||
}
|
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_WRITE_STORAGE:
|
||||||
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_WRITE_STORAGE: {
|
|
||||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
permGrantedWriteAccess = true;
|
exportBackup();
|
||||||
} else {
|
} else {
|
||||||
permGrantedWriteAccess = false;
|
Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
return;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -51,8 +51,6 @@ public class BluetoothPreferences extends PreferenceFragment implements SharedPr
|
|||||||
private static final String PREFERENCE_KEY_BLUETOOTH_IGNOREOUTOFRANGE = "ignoreOutOfRange";
|
private static final String PREFERENCE_KEY_BLUETOOTH_IGNOREOUTOFRANGE = "ignoreOutOfRange";
|
||||||
private static final String PREFERENCE_KEY_BLUETOOTH_SCANNER = "btScanner";
|
private static final String PREFERENCE_KEY_BLUETOOTH_SCANNER = "btScanner";
|
||||||
|
|
||||||
private boolean permGrantedCoarseLocation;
|
|
||||||
|
|
||||||
private CheckBoxPreference smartAssignEnable;
|
private CheckBoxPreference smartAssignEnable;
|
||||||
private CheckBoxPreference ignoreOutOfRangeEnable;
|
private CheckBoxPreference ignoreOutOfRangeEnable;
|
||||||
private PreferenceScreen btScanner;
|
private PreferenceScreen btScanner;
|
||||||
@@ -136,8 +134,6 @@ public class BluetoothPreferences extends PreferenceFragment implements SharedPr
|
|||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
permGrantedCoarseLocation = false;
|
|
||||||
|
|
||||||
btAdapter = BluetoothAdapter.getDefaultAdapter();
|
btAdapter = BluetoothAdapter.getDefaultAdapter();
|
||||||
|
|
||||||
addPreferencesFromResource(R.xml.bluetooth_preferences);
|
addPreferencesFromResource(R.xml.bluetooth_preferences);
|
||||||
@@ -226,14 +222,9 @@ public class BluetoothPreferences extends PreferenceFragment implements SharedPr
|
|||||||
private class onClickListenerScannerSelect implements Preference.OnPreferenceClickListener {
|
private class onClickListenerScannerSelect implements Preference.OnPreferenceClickListener {
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceClick(Preference preference) {
|
public boolean onPreferenceClick(Preference preference) {
|
||||||
permGrantedCoarseLocation = PermissionHelper.requestBluetoothPermission(getActivity(), true);
|
if (PermissionHelper.requestBluetoothPermission(getActivity(), true)) {
|
||||||
|
|
||||||
if (permGrantedCoarseLocation) {
|
|
||||||
startSearching();
|
startSearching();
|
||||||
} else {
|
}
|
||||||
Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -259,9 +250,9 @@ public class BluetoothPreferences extends PreferenceFragment implements SharedPr
|
|||||||
switch (requestCode) {
|
switch (requestCode) {
|
||||||
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION: {
|
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION: {
|
||||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
permGrantedCoarseLocation = true;
|
startSearching();
|
||||||
} else {
|
} else {
|
||||||
permGrantedCoarseLocation = false;
|
Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -25,7 +25,6 @@ import android.content.DialogInterface;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.support.v4.app.ActivityCompat;
|
import android.support.v4.app.ActivityCompat;
|
||||||
import android.support.v4.content.ContextCompat;
|
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.health.openscale.R;
|
import com.health.openscale.R;
|
||||||
@@ -56,7 +55,7 @@ public class PermissionHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ContextCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||||
|
|
||||||
builder.setMessage(R.string.permission_bluetooth_info)
|
builder.setMessage(R.string.permission_bluetooth_info)
|
||||||
@@ -79,7 +78,7 @@ public class PermissionHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean requestReadPermission(final Activity activity) {
|
public static boolean requestReadPermission(final Activity activity) {
|
||||||
if (ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
||||||
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_ACCESS_READ_STORAGE);
|
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_ACCESS_READ_STORAGE);
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
@@ -89,7 +88,7 @@ public class PermissionHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean requestWritePermission(final Activity activity) {
|
public static boolean requestWritePermission(final Activity activity) {
|
||||||
if (ContextCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
||||||
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_ACCESS_WRITE_STORAGE);
|
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_ACCESS_WRITE_STORAGE);
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
|
Reference in New Issue
Block a user