1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-09-02 12:54:10 +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;
}
currentFragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

View File

@@ -15,6 +15,7 @@
*/
package com.health.openscale.gui.activities;
import android.app.Fragment;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -22,6 +23,9 @@ import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
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.List;
@@ -29,6 +33,7 @@ import java.util.List;
public class SettingsActivity extends PreferenceActivity {
public static String EXTRA_TINT_COLOR = "tintColor";
private static List<String> fragments = new ArrayList<String>();
private Fragment currentFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -60,4 +65,28 @@ public class SettingsActivity extends PreferenceActivity {
protected boolean isValidFragment(String 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);
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
public void onMyOwnRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_READ_STORAGE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
@@ -236,7 +235,5 @@ public class BackupPreferences extends PreferenceFragment {
}
break;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}

View File

@@ -245,8 +245,7 @@ public class BluetoothPreferences extends PreferenceFragment implements SharedPr
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
public void onMyOwnRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case PermissionHelper.PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
@@ -254,7 +253,7 @@ public class BluetoothPreferences extends PreferenceFragment implements SharedPr
} else {
Toast.makeText(getActivity().getApplicationContext(), getResources().getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show();
}
return;
break;
}
}
}