Этот коммит содержится в:
Anton Tananaev
2015-09-03 10:10:39 +12:00
родитель 78bf7f3169
Коммит 2194290935
+23 -15
Просмотреть файл
@@ -65,7 +65,7 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
initPreferences(); initPreferences();
if (sharedPreferences.getBoolean(KEY_STATUS, false)) { if (sharedPreferences.getBoolean(KEY_STATUS, false)) {
checkPermissionsAndStartService(); startTrackingService(true, false);
} }
} }
@@ -105,10 +105,9 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals(KEY_STATUS)) { if (key.equals(KEY_STATUS)) {
if (sharedPreferences.getBoolean(KEY_STATUS, false)) { if (sharedPreferences.getBoolean(KEY_STATUS, false)) {
checkPermissionsAndStartService(); startTrackingService(true, false);
} else { } else {
stopService(new Intent(this, TrackingService.class)); stopTrackingService();
setPreferencesEnabled(true);
} }
} else if (key.equals(KEY_DEVICE)) { } else if (key.equals(KEY_DEVICE)) {
findPreference(KEY_DEVICE).setSummary(sharedPreferences.getString(KEY_DEVICE, null)); findPreference(KEY_DEVICE).setSummary(sharedPreferences.getString(KEY_DEVICE, null));
@@ -137,9 +136,9 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
PreferenceManager.setDefaultValues(this, R.xml.preferences, false); PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
} }
private void initDeviceId(boolean devicePermission) { private void initDeviceId(boolean permission) {
String id; String id;
if (devicePermission) { if (permission) {
id = ((TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); id = ((TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
} else { } else {
id = String.valueOf(new Random().nextInt(900000) + 100000); id = String.valueOf(new Random().nextInt(900000) + 100000);
@@ -150,7 +149,8 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
preference.setSummary(id); preference.setSummary(id);
} }
private void checkPermissionsAndStartService() { private void startTrackingService(boolean checkPermission, boolean permission) {
if (checkPermission) {
Set<String> missingPermissions = new HashSet<String>(); Set<String> missingPermissions = new HashSet<String>();
if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
missingPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION); missingPermissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
@@ -159,19 +159,14 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
missingPermissions.add(Manifest.permission.ACCESS_COARSE_LOCATION); missingPermissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);
} }
if (missingPermissions.isEmpty()) { if (missingPermissions.isEmpty()) {
setPreferencesEnabled(false); permission = true;
startService(new Intent(this, TrackingService.class));
} else { } else {
requestPermissions(missingPermissions.toArray(new String[missingPermissions.size()]), PERMISSIONS_REQUEST_LOCATION); requestPermissions(missingPermissions.toArray(new String[missingPermissions.size()]), PERMISSIONS_REQUEST_LOCATION);
return;
} }
} }
@Override if (permission) {
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == PERMISSIONS_REQUEST_DEVICE) {
initDeviceId(grantResults[0] == PackageManager.PERMISSION_GRANTED);
} else if (requestCode == PERMISSIONS_REQUEST_LOCATION) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED && (permissions.length < 2 || grantResults[1] == PackageManager.PERMISSION_GRANTED)) {
setPreferencesEnabled(false); setPreferencesEnabled(false);
startService(new Intent(this, TrackingService.class)); startService(new Intent(this, TrackingService.class));
} else { } else {
@@ -185,6 +180,19 @@ public class MainActivity extends PreferenceActivity implements OnSharedPreferen
} }
} }
} }
private void stopTrackingService() {
stopService(new Intent(this, TrackingService.class));
setPreferencesEnabled(true);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == PERMISSIONS_REQUEST_DEVICE) {
initDeviceId(grantResults[0] == PackageManager.PERMISSION_GRANTED);
} else if (requestCode == PERMISSIONS_REQUEST_LOCATION) {
startTrackingService(false, grantResults[0] == PackageManager.PERMISSION_GRANTED && (permissions.length < 2 || grantResults[1] == PackageManager.PERMISSION_GRANTED));
}
} }
} }