56

ユーザーの場所を取得しています

Location location = LocationServices.FusedLocationApi.getLastLocation(
            mGoogleApiClient);

このコード行はメソッド内にあり、このメソッドを呼び出す前に、Android ランタイムのアクセス許可を確認します。ユーザーから許可が得られる場合にのみ、このメソッドを呼び出します。コードは完全に機能しています。

問題は、Android Studio がまだこの行にエラーを表示していて、この関数を呼び出す前に既にチェック済みであることを認識していないことです。

Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with `checkPermission`) or explicitly handle a potential `SecurityException`

この警告を削除するにはどうすればよいですか? 既にアクセス許可を確認しましたが、この警告を削除するためだけに再度確認する必要はありません。@SuppressWarnings() を追加しようとしましたが、これに渡す正確な文字列がわかりません。 @SuppressWarnings({"all"})は機能しますが、明らかに推奨されません。

この警告を削除するにはどうすればよいですか?

編集1:これは私の正確なコードです -

private void checkPermissions() {
    if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
            == PackageManager.PERMISSION_GRANTED)
        getLocation();  //Method called if I have permission
}

private void getLocation() {
    //Android studio shows warning at this line.
    Location location = LocationServices.FusedLocationApi.getLastLocation(
            mGoogleApiClient);
}

しかし、パーミッション チェックを getLocation() メソッド内に配置すると、警告が消えます。@SuppressWarnings({"MissingPermission"})は機能しませんでした。

編集2:警告を抑制する唯一の方法は-

その特定のコードの上にこのコメントを追加する -

//noinspection ResourceType

またはこれを追加する -

@SuppressWarnings({"ResourceType"})
4

3 に答える 3