1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-09-03 05:12:42 +02:00

HACK to call RequestPermissionResult(...) in PreferenceFragment otherwise API level > 23 is required

This commit is contained in:
OliE
2018-02-11 14:21:00 +01:00
parent 653cfa7b67
commit 8ec7eac288
4 changed files with 33 additions and 7 deletions

View File

@@ -473,6 +473,7 @@ public class MainActivity extends AppCompatActivity {
break; break;
} }
currentFragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
super.onRequestPermissionsResult(requestCode, permissions, grantResults); super.onRequestPermissionsResult(requestCode, permissions, grantResults);
} }

View File

@@ -15,6 +15,7 @@
*/ */
package com.health.openscale.gui.activities; package com.health.openscale.gui.activities;
import android.app.Fragment;
import android.graphics.PorterDuff; import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
@@ -22,6 +23,9 @@ import android.preference.PreferenceActivity;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import com.health.openscale.R; import com.health.openscale.R;
import com.health.openscale.gui.preferences.BackupPreferences;
import com.health.openscale.gui.preferences.BluetoothPreferences;
import com.health.openscale.gui.utils.PermissionHelper;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -29,6 +33,7 @@ import java.util.List;
public class SettingsActivity extends PreferenceActivity { public class SettingsActivity extends PreferenceActivity {
public static String EXTRA_TINT_COLOR = "tintColor"; public static String EXTRA_TINT_COLOR = "tintColor";
private static List<String> fragments = new ArrayList<String>(); private static List<String> fragments = new ArrayList<String>();
private Fragment currentFragment;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@@ -60,4 +65,28 @@ public class SettingsActivity extends PreferenceActivity {
protected boolean isValidFragment(String fragmentName) { protected boolean isValidFragment(String fragmentName) {
return fragments.contains(fragmentName); return fragments.contains(fragmentName);
} }
@Override
public void onAttachFragment(Fragment fragment) {
currentFragment = fragment;
super.onAttachFragment(fragment);
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
// HACK to call RequestPermissionResult(...) in PreferenceFragment otherwise API level > 23 is required
switch(requestCode) {
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION:
BluetoothPreferences bluetoothPreferences = (BluetoothPreferences)currentFragment;
bluetoothPreferences.onMyOwnRequestPermissionsResult(requestCode, permissions, grantResults);
break;
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_READ_STORAGE:
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_WRITE_STORAGE:
BackupPreferences backupPreferences = (BackupPreferences)currentFragment;
backupPreferences.onMyOwnRequestPermissionsResult(requestCode, permissions, grantResults);
break;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
} }

View File

@@ -218,8 +218,7 @@ public class BackupPreferences extends PreferenceFragment {
return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
} }
@Override public void onMyOwnRequestPermissionsResult(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) {
@@ -236,7 +235,5 @@ public class BackupPreferences extends PreferenceFragment {
} }
break; break;
} }
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
} }
} }

View File

@@ -245,8 +245,7 @@ public class BluetoothPreferences extends PreferenceFragment implements SharedPr
} }
} }
@Override public void onMyOwnRequestPermissionsResult(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) {
@@ -254,7 +253,7 @@ public class BluetoothPreferences extends PreferenceFragment implements SharedPr
} else { } else {
Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show(); Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show();
} }
return; break;
} }
} }
} }