Loading app/src/main/java/org/asdtm/goodweather/MainActivity.java +138 −137 Original line number Diff line number Diff line Loading @@ -14,17 +14,17 @@ import android.graphics.Typeface; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Build; import android.os.Bundle; import android.provider.Settings; import android.support.annotation.NonNull; import android.support.design.widget.AppBarLayout; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v4.content.LocalBroadcastManager; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AlertDialog; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; Loading @@ -38,6 +38,7 @@ import org.asdtm.goodweather.model.Weather; import org.asdtm.goodweather.service.CurrentWeatherService; import org.asdtm.goodweather.utils.AppPreference; import org.asdtm.goodweather.utils.Constants; import org.asdtm.goodweather.utils.PermissionUtil; import org.asdtm.goodweather.utils.Utils; import java.util.Locale; Loading Loading @@ -69,8 +70,6 @@ public class MainActivity extends BaseActivity implements AppBarLayout.OnOffsetC private ConnectionDetector connectionDetector; private Boolean isNetworkAvailable; private ProgressDialog mProgressDialog; private boolean isGPSEnabled = false; private boolean isNetworkEnabled = false; private LocationManager locationManager; private SwipeRefreshLayout mSwipeRefresh; private Menu mToolbarMenu; Loading @@ -93,6 +92,10 @@ public class MainActivity extends BaseActivity implements AppBarLayout.OnOffsetC public static Weather mWeather; public static CitySearch mCitySearch; private static final int REQUEST_LOCATION = 0; private static String[] PERMISSIONS_LOCATION = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading Loading @@ -209,19 +212,6 @@ public class MainActivity extends BaseActivity implements AppBarLayout.OnOffsetC @Override public boolean onOptionsItemSelected(MenuItem item) { isGPSEnabled = locationManager.getAllProviders().contains( LocationManager.GPS_PROVIDER) && locationManager.isProviderEnabled( LocationManager.GPS_PROVIDER); isNetworkEnabled = locationManager.getAllProviders().contains( LocationManager.NETWORK_PROVIDER) && locationManager.isProviderEnabled( LocationManager.NETWORK_PROVIDER); mProgressDialog = new ProgressDialog(MainActivity.this); mProgressDialog.setMessage(getString(R.string.progressDialog_gps_locate)); mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); mProgressDialog.setIndeterminate(true); mProgressDialog.setCancelable(false); switch (item.getItemId()) { case R.id.main_menu_refresh: if (connectionDetector.isNetworkAvailableAndConnected()) { Loading @@ -235,17 +225,7 @@ public class MainActivity extends BaseActivity implements AppBarLayout.OnOffsetC } return true; case R.id.main_menu_detect_location: if (isGPSEnabled) { gpsRequestLocation(); mProgressDialog.show(); } else { showSettingsAlert(); } if (isNetworkEnabled) { networkRequestLocation(); mProgressDialog.show(); } requestLocation(); return true; case R.id.main_menu_search_city: Intent intent = new Intent(MainActivity.this, SearchActivity.class); Loading @@ -263,24 +243,9 @@ public class MainActivity extends BaseActivity implements AppBarLayout.OnOffsetC String latitude = String.format("%1$.2f", location.getLatitude()); String longitude = String.format("%1$.2f", location.getLongitude()); Log.d(TAG, "Current location: " + latitude + ";" + longitude); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat .checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } } if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { locationManager.removeUpdates(mLocationListener); } connectionDetector = new ConnectionDetector(MainActivity.this); isNetworkAvailable = connectionDetector.isNetworkAvailableAndConnected(); Loading Loading @@ -333,72 +298,6 @@ public class MainActivity extends BaseActivity implements AppBarLayout.OnOffsetC } }; public void showSettingsAlert() { AlertDialog.Builder settingsAlert = new AlertDialog.Builder(MainActivity.this); settingsAlert.setTitle(R.string.alertDialog_gps_title); settingsAlert.setMessage(R.string.alertDialog_gps_message); settingsAlert.setPositiveButton(R.string.alertDialog_gps_positiveButton, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent goToSettings = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(goToSettings); } }); settingsAlert.setNegativeButton(R.string.alertDialog_gps_negativeButton, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); settingsAlert.show(); } public void gpsRequestLocation() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat .checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } } locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener); } public void networkRequestLocation() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat .checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } } locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mLocationListener); } private void preLoadWeather() { mUnits = AppPreference.getTemperatureUnit(this); mSpeedScale = Utils.getSpeedScale(this); Loading Loading @@ -595,4 +494,106 @@ public class MainActivity extends BaseActivity implements AppBarLayout.OnOffsetC } } }; private void detectLocation() { boolean isGPSEnabled = locationManager.getAllProviders().contains(LocationManager.GPS_PROVIDER) && locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); boolean isNetworkEnabled = locationManager.getAllProviders().contains(LocationManager.NETWORK_PROVIDER) && locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); mProgressDialog = new ProgressDialog(MainActivity.this); mProgressDialog.setMessage(getString(R.string.progressDialog_gps_locate)); mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); mProgressDialog.setIndeterminate(true); mProgressDialog.setCancelable(false); if (isNetworkEnabled) { networkRequestLocation(); mProgressDialog.show(); } else { if (isGPSEnabled) { gpsRequestLocation(); mProgressDialog.show(); } else { showSettingsAlert(); } } } public void showSettingsAlert() { AlertDialog.Builder settingsAlert = new AlertDialog.Builder(MainActivity.this); settingsAlert.setTitle(R.string.alertDialog_gps_title); settingsAlert.setMessage(R.string.alertDialog_gps_message); settingsAlert.setPositiveButton(R.string.alertDialog_gps_positiveButton, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent goToSettings = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(goToSettings); } }); settingsAlert.setNegativeButton(R.string.alertDialog_gps_negativeButton, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); settingsAlert.show(); } public void gpsRequestLocation() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener); } } public void networkRequestLocation() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mLocationListener); } } private void requestLocation() { int fineLocationPermission = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION); if (fineLocationPermission != PackageManager.PERMISSION_GRANTED) { requestLocationPermission(); } else { detectLocation(); } } private void requestLocationPermission() { if (ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.ACCESS_FINE_LOCATION)) { Snackbar.make(findViewById(android.R.id.content), R.string.permission_location_rationale, Snackbar.LENGTH_LONG) .setAction(android.R.string.ok, new View.OnClickListener() { @Override public void onClick(View view) { ActivityCompat.requestPermissions(MainActivity.this, PERMISSIONS_LOCATION, REQUEST_LOCATION); } }).show(); } else { ActivityCompat.requestPermissions(this, PERMISSIONS_LOCATION, REQUEST_LOCATION); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case REQUEST_LOCATION: if (PermissionUtil.verifyPermissions(grantResults)) { Snackbar.make(findViewById(android.R.id.content), R.string.permission_available_location, Snackbar.LENGTH_SHORT).show(); } else { Snackbar.make(findViewById(android.R.id.content), R.string.permission_not_granted, Snackbar.LENGTH_SHORT).show(); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); break; } } } app/src/main/java/org/asdtm/goodweather/utils/PermissionUtil.java 0 → 100644 +19 −0 Original line number Diff line number Diff line package org.asdtm.goodweather.utils; import android.content.pm.PackageManager; public class PermissionUtil { public static boolean verifyPermissions(int[] grantResults) { if (grantResults.length < 1) { return false; } for (int result : grantResults) { if (result != PackageManager.PERMISSION_GRANTED) { return false; } } return true; } } app/src/main/res/values-be/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -109,4 +109,8 @@ <string name="toolbar_menu_refresh">Абнавіць</string> <string name="preference_hide_desc">Схаваць апісанне надвор\'я</string> <!-- Permission strings --> <string name="permission_location_rationale">Дазволу "Атрыманне месцазнаходжаньня" неабходны для вызначэння горада</string> <string name="permission_not_granted">Дазволу не прадастаўлены!</string> <string name="permission_available_location">Дазволу "Атрыманне месцазнаходжаньня" былі прадастаўлены</string> </resources> app/src/main/res/values-de/strings.xml +5 −0 Original line number Diff line number Diff line Loading @@ -109,4 +109,9 @@ <string name="wind_direction_west">W</string> <string name="wind_direction_north_west">NW</string> <string name="preference_hide_desc">Wetterbeschreibung anzeigen</string> <!-- Permission strings --> <string name="permission_location_rationale">Standort Berechtigungen werden benötigt, um die aktuelle Stadt zu ermitteln</string> <string name="permission_not_granted">Berechtigungen wurden nicht gewährt!</string> <string name="permission_available_location">Standort Berechtigungen wurden erteilt</string> </resources> app/src/main/res/values-es/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -109,4 +109,8 @@ <string name="wind_direction_west">O</string> <string name="wind_direction_north_west">NO</string> <!-- Permission strings --> <string name="permission_location_rationale">Ubicación Se necesitan permisos para determinar la ciudad actual</string> <string name="permission_not_granted">Los permisos no se concedieron!</string> <string name="permission_available_location">Ubicación Se han concedido permisos</string> </resources> Loading
app/src/main/java/org/asdtm/goodweather/MainActivity.java +138 −137 Original line number Diff line number Diff line Loading @@ -14,17 +14,17 @@ import android.graphics.Typeface; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Build; import android.os.Bundle; import android.provider.Settings; import android.support.annotation.NonNull; import android.support.design.widget.AppBarLayout; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v4.content.LocalBroadcastManager; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AlertDialog; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; Loading @@ -38,6 +38,7 @@ import org.asdtm.goodweather.model.Weather; import org.asdtm.goodweather.service.CurrentWeatherService; import org.asdtm.goodweather.utils.AppPreference; import org.asdtm.goodweather.utils.Constants; import org.asdtm.goodweather.utils.PermissionUtil; import org.asdtm.goodweather.utils.Utils; import java.util.Locale; Loading Loading @@ -69,8 +70,6 @@ public class MainActivity extends BaseActivity implements AppBarLayout.OnOffsetC private ConnectionDetector connectionDetector; private Boolean isNetworkAvailable; private ProgressDialog mProgressDialog; private boolean isGPSEnabled = false; private boolean isNetworkEnabled = false; private LocationManager locationManager; private SwipeRefreshLayout mSwipeRefresh; private Menu mToolbarMenu; Loading @@ -93,6 +92,10 @@ public class MainActivity extends BaseActivity implements AppBarLayout.OnOffsetC public static Weather mWeather; public static CitySearch mCitySearch; private static final int REQUEST_LOCATION = 0; private static String[] PERMISSIONS_LOCATION = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading Loading @@ -209,19 +212,6 @@ public class MainActivity extends BaseActivity implements AppBarLayout.OnOffsetC @Override public boolean onOptionsItemSelected(MenuItem item) { isGPSEnabled = locationManager.getAllProviders().contains( LocationManager.GPS_PROVIDER) && locationManager.isProviderEnabled( LocationManager.GPS_PROVIDER); isNetworkEnabled = locationManager.getAllProviders().contains( LocationManager.NETWORK_PROVIDER) && locationManager.isProviderEnabled( LocationManager.NETWORK_PROVIDER); mProgressDialog = new ProgressDialog(MainActivity.this); mProgressDialog.setMessage(getString(R.string.progressDialog_gps_locate)); mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); mProgressDialog.setIndeterminate(true); mProgressDialog.setCancelable(false); switch (item.getItemId()) { case R.id.main_menu_refresh: if (connectionDetector.isNetworkAvailableAndConnected()) { Loading @@ -235,17 +225,7 @@ public class MainActivity extends BaseActivity implements AppBarLayout.OnOffsetC } return true; case R.id.main_menu_detect_location: if (isGPSEnabled) { gpsRequestLocation(); mProgressDialog.show(); } else { showSettingsAlert(); } if (isNetworkEnabled) { networkRequestLocation(); mProgressDialog.show(); } requestLocation(); return true; case R.id.main_menu_search_city: Intent intent = new Intent(MainActivity.this, SearchActivity.class); Loading @@ -263,24 +243,9 @@ public class MainActivity extends BaseActivity implements AppBarLayout.OnOffsetC String latitude = String.format("%1$.2f", location.getLatitude()); String longitude = String.format("%1$.2f", location.getLongitude()); Log.d(TAG, "Current location: " + latitude + ";" + longitude); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat .checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } } if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { locationManager.removeUpdates(mLocationListener); } connectionDetector = new ConnectionDetector(MainActivity.this); isNetworkAvailable = connectionDetector.isNetworkAvailableAndConnected(); Loading Loading @@ -333,72 +298,6 @@ public class MainActivity extends BaseActivity implements AppBarLayout.OnOffsetC } }; public void showSettingsAlert() { AlertDialog.Builder settingsAlert = new AlertDialog.Builder(MainActivity.this); settingsAlert.setTitle(R.string.alertDialog_gps_title); settingsAlert.setMessage(R.string.alertDialog_gps_message); settingsAlert.setPositiveButton(R.string.alertDialog_gps_positiveButton, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent goToSettings = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(goToSettings); } }); settingsAlert.setNegativeButton(R.string.alertDialog_gps_negativeButton, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); settingsAlert.show(); } public void gpsRequestLocation() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat .checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } } locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener); } public void networkRequestLocation() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat .checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } } locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mLocationListener); } private void preLoadWeather() { mUnits = AppPreference.getTemperatureUnit(this); mSpeedScale = Utils.getSpeedScale(this); Loading Loading @@ -595,4 +494,106 @@ public class MainActivity extends BaseActivity implements AppBarLayout.OnOffsetC } } }; private void detectLocation() { boolean isGPSEnabled = locationManager.getAllProviders().contains(LocationManager.GPS_PROVIDER) && locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); boolean isNetworkEnabled = locationManager.getAllProviders().contains(LocationManager.NETWORK_PROVIDER) && locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); mProgressDialog = new ProgressDialog(MainActivity.this); mProgressDialog.setMessage(getString(R.string.progressDialog_gps_locate)); mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); mProgressDialog.setIndeterminate(true); mProgressDialog.setCancelable(false); if (isNetworkEnabled) { networkRequestLocation(); mProgressDialog.show(); } else { if (isGPSEnabled) { gpsRequestLocation(); mProgressDialog.show(); } else { showSettingsAlert(); } } } public void showSettingsAlert() { AlertDialog.Builder settingsAlert = new AlertDialog.Builder(MainActivity.this); settingsAlert.setTitle(R.string.alertDialog_gps_title); settingsAlert.setMessage(R.string.alertDialog_gps_message); settingsAlert.setPositiveButton(R.string.alertDialog_gps_positiveButton, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent goToSettings = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(goToSettings); } }); settingsAlert.setNegativeButton(R.string.alertDialog_gps_negativeButton, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); settingsAlert.show(); } public void gpsRequestLocation() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener); } } public void networkRequestLocation() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mLocationListener); } } private void requestLocation() { int fineLocationPermission = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION); if (fineLocationPermission != PackageManager.PERMISSION_GRANTED) { requestLocationPermission(); } else { detectLocation(); } } private void requestLocationPermission() { if (ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.ACCESS_FINE_LOCATION)) { Snackbar.make(findViewById(android.R.id.content), R.string.permission_location_rationale, Snackbar.LENGTH_LONG) .setAction(android.R.string.ok, new View.OnClickListener() { @Override public void onClick(View view) { ActivityCompat.requestPermissions(MainActivity.this, PERMISSIONS_LOCATION, REQUEST_LOCATION); } }).show(); } else { ActivityCompat.requestPermissions(this, PERMISSIONS_LOCATION, REQUEST_LOCATION); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case REQUEST_LOCATION: if (PermissionUtil.verifyPermissions(grantResults)) { Snackbar.make(findViewById(android.R.id.content), R.string.permission_available_location, Snackbar.LENGTH_SHORT).show(); } else { Snackbar.make(findViewById(android.R.id.content), R.string.permission_not_granted, Snackbar.LENGTH_SHORT).show(); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); break; } } }
app/src/main/java/org/asdtm/goodweather/utils/PermissionUtil.java 0 → 100644 +19 −0 Original line number Diff line number Diff line package org.asdtm.goodweather.utils; import android.content.pm.PackageManager; public class PermissionUtil { public static boolean verifyPermissions(int[] grantResults) { if (grantResults.length < 1) { return false; } for (int result : grantResults) { if (result != PackageManager.PERMISSION_GRANTED) { return false; } } return true; } }
app/src/main/res/values-be/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -109,4 +109,8 @@ <string name="toolbar_menu_refresh">Абнавіць</string> <string name="preference_hide_desc">Схаваць апісанне надвор\'я</string> <!-- Permission strings --> <string name="permission_location_rationale">Дазволу "Атрыманне месцазнаходжаньня" неабходны для вызначэння горада</string> <string name="permission_not_granted">Дазволу не прадастаўлены!</string> <string name="permission_available_location">Дазволу "Атрыманне месцазнаходжаньня" былі прадастаўлены</string> </resources>
app/src/main/res/values-de/strings.xml +5 −0 Original line number Diff line number Diff line Loading @@ -109,4 +109,9 @@ <string name="wind_direction_west">W</string> <string name="wind_direction_north_west">NW</string> <string name="preference_hide_desc">Wetterbeschreibung anzeigen</string> <!-- Permission strings --> <string name="permission_location_rationale">Standort Berechtigungen werden benötigt, um die aktuelle Stadt zu ermitteln</string> <string name="permission_not_granted">Berechtigungen wurden nicht gewährt!</string> <string name="permission_available_location">Standort Berechtigungen wurden erteilt</string> </resources>
app/src/main/res/values-es/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -109,4 +109,8 @@ <string name="wind_direction_west">O</string> <string name="wind_direction_north_west">NO</string> <!-- Permission strings --> <string name="permission_location_rationale">Ubicación Se necesitan permisos para determinar la ciudad actual</string> <string name="permission_not_granted">Los permisos no se concedieron!</string> <string name="permission_available_location">Ubicación Se han concedido permisos</string> </resources>