Google apiを使用して最後に知られている場所を取得しようとしています。私はエラーを取得していますAndroidのアクセス許可のリクエストエラー
は、「コールは拒否できる権限が必要です...」
をしかし、私はすでに実行時の権限のために求めてきましたので、エラーがまだある理由を私は知りませんここで
は、私がやったものだ...示す:/** Value to match on callback of request permissions response */
public static final int MY_PERMISSIONS_REQUEST_LOCATION = 1;
/** GoogleApiClient */
private GoogleApiClient googleApiClient = null;
/** Last known location */
private Location lastLocation = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
// Create a GoogleApiClient instance
googleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.enableAutoManage(this, this)
.addApi(LocationServices.API)
.build();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_LOCATION: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay!
if (permissions.length == 1 &&
permissions[0] == Manifest.permission.ACCESS_FINE_LOCATION) {
// ERROR STILL SHOWING HERE!
lastLocation = LocationServices.FusedLocationApi.getLastLocation(
googleApiClient);
}
} else {
// permission denied, boo!
}
break;
}
default:
break;
}
}
@Override
public void onConnected(@Nullable Bundle bundle) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
// NO ERROR HERE, IT'S FINE
lastLocation = LocationServices.FusedLocationApi.getLastLocation(
googleApiClient);
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_LOCATION);
}
}
@Override
public void onConnectionSuspended(int i) {
// do nothing
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
// An unresolvable error has occurred and a connection to Google APIs
// could not be established. Display an error message, or handle
// the failure silently
Toast toast = Toast.makeText(this, getText(R.string.google_api_connection_error), Toast.LENGTH_LONG);
toast.show();
}
あなたが見ることができるように、これは私が何をしたいです:
lastLocation = LocationServices.FusedLocationApi.getLastLocation(googleApiClient);
なぜ私はまだエラーが発生するのですか?これをどのように修正できますか?
ありがとうございます!
Android Studio Javaエディター内のメッセージを参照している場合は、エラーではなく、Lint警告です。すべてが正しく実装されていると思われる場合は、クイックフィックスメニューからLintメッセージを表示しないようにするオプションが必要です。 – CommonsWare
警告ではありません。エラーです。 (リンター上の赤色)。それは私にプロジェクトをビルドさせてくれません。 – Tirafesi
"警告ではなく、エラーです(リンターの赤い色)" - AFAIK、Googleはもう赤しか使用しません。 「それではプロジェクトをビルドすることはできません」 - ほとんどの場合、ビルドプロセスで異なるエラーが発生しています。これを修正する必要があります。これはGradle Consoleやその他の出力ペインに表示され、Javaエディタには表示されません。この特定のメッセージは、コンパイルエラーではなく、Lint警告であるため、Javaエディタにのみ表示されます。私が提案したことを実行し、クイックフィックスメニューを使用して適切な '@ SuppressLint'アノテーションを追加することもできます。 – CommonsWare