Ich versuche, eine Anwendung zu erstellen, die Standortaktualisierungen eines Benutzers alle fünf Minuten sendet. Ich nehme an, dass mein Code gut funktioniert, aber ich bekomme einen Fehler bezüglich der Berechtigungen, die von der Anwendung verwendet werden. Ich bin mir ziemlich sicher, dass ich die Berechtigungen in der Manifestdatei hinzugefügt habe. Kann mir jemand sagen, was los ist? Hier ist mein Code.Aufruf erfordert Berechtigungen, die vom Benutzer möglicherweise abgelehnt werden
MainActivity.java
LocationManager locationManager ;
String provider;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Getting LocationManager object
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
// Creating an empty criteria object
Criteria criteria = new Criteria();
// Getting the name of the provider that meets the criteria
provider = locationManager.getBestProvider(criteria, false);
if(provider!=null && !provider.equals("")){
// Get the location from the given provider
Location location = locationManager.getLastKnownLocation(provider);
locationManager.requestLocationUpdates(provider,5*60*1000,0,this);
if(location!=null)
onLocationChanged(location);
else
Toast.makeText(getBaseContext(), "Location can't be retrieved", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getBaseContext(), "No Provider Found", Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onLocationChanged(Location location) {
// Getting reference to TextView tv_longitude
TextView tvLongitude = (TextView)findViewById(R.id.tv_longitude);
// Getting reference to TextView tv_latitude
TextView tvLatitude = (TextView)findViewById(R.id.tv_latitude);
// Setting Current Longitude
tvLongitude.setText("Longitude:" + location.getLongitude());
// Setting Current Latitude
tvLatitude.setText("Latitude:" + location.getLatitude());
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
Ich erhalte eine Fehlermeldung als Anruf Genehmigung erfordert, die vom Benutzer zurückgewiesen werden kann in dieser Lines-
Location location = locationManager.getLastKnownLocation(provider);
locationManager.requestLocationUpdates(provider,5*60*1000,0,this);
Mein AndroidManifest ist wie thi s
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
auffordern kann ich Android 4.2 verwenden und höher. –
Sie müssen mit SDK 23 kompilieren, gibt es keine andere Erklärung.überprüfen Sie bitte, dass in Ihrer App Graddle-Datei – Shahar
Ja, Sie hatten Recht! Es wurde mit SDK 23 kompiliert. Danke, das hat das Problem gelöst. –