web-dev-qa-db-ja.com

Manifest.permission.ACCESS_FINE_LOCATIONを解決できません

マニフェストファイルにアクセス許可を追加すると、以下のxmlが機能します。

 <permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />

ただし、このxmlは機能しません。

<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />

どちらを使用する予定ですか?それが最初の場合、なぜ機能しないのですか?どうすれば修正できますか?

また、Android 6.0ランタイム許可関連の例外が発生しています。

Java.lang.SecurityException: "gps" location provider requires ACCESS_FINE_LOCATION permission.

許可を確認するために許可をString配列に追加しようとすると、Android St​​udioは、以下のコードでManifest.permissionを解決できないと言っています。

new String[]{Manifest.permission.ACCESS_FINE_LOCATION}

なぜこれを行うのでしょうか?どうすれば修正できますか?

71
Pablo Cegarra

最初の部分では、<uses-permission>Android Devlopersサイトによる を使用する必要があります。 <manifest>タグではなく、<application>タグの下で直接アクセス許可を宣言するようにしてください。マニフェストファイル全体を見ることなく、問題が何であるかを知ることは困難です。 上記のリンクをチェックしてください マニフェストでアクセス許可を宣言する方法の詳細について。

ランタイム許可の問題に関して:

Uses-permissionsでは解決できません。

new String [] {Manifest.permission.ACCESS_FINE_LOCATION}

どうして?

Android.Manifestではなくmy.app.package.Manifestを使用していることを確認してください。多くの場合、Android St​​udioのデフォルトは前者ではなく後者になります。

したがって、新しいコード行は次のようになります。

new String[]{Android.Manifest.permission.ACCESS_FINE_LOCATION};

編集:私は答えを再フォーマットしました。

編集2:Android.Manifestのインポートには注意してください。 my.app.package.Manifestもインポートしている場合は、canで問題が発生します。それ以外のimport Android.Manifestは、この問題を解決するための別の有効な方法です。

207
sonictt1

これを変える

Manifest.permission.ACCESS_FINE_LOCATION

これに

Android.Manifest.permission.ACCESS_FINE_LOCATION

80
fcicer

これを試して! ACCESS_FINE_LOCATIONは次のパッケージで利用できるため、追加:

import Android.Manifest;

­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

19

使用した場合、同様の問題が発生しました。

ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED 

シンボルREAD_CONTACTSを解決できなかった場合。

ただし、使用時

import Android.Manifest;

READ_CONTACTを認識し始めました

5

動的な許可とACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATIONのような許可に取り組んでいる場合"メソッドPERMISSION_NAMEを解決できません"この場合、許可名でコードを記述してからプロジェクトを再構築これは再生成マニフェスト(Manifest.permission)ファイル

3
anoopbryan2

マニフェストファイルでses.permissionsが既に正しく設定されている場合(hnilsenで既に述べたように)、次の行を置き換えます。

 Manifest.permission.ACCESS_FINE_LOCATION

これによって:

 Android.Manifest.permission.ACCESS_FINE_LOCATION

これで問題を解決できます。

1
Marcelo Gumiero
 if (Build.VERSION.SDK_INT >= 23) {

            if (checkSelfPermission(Android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
                    || checkSelfPermission(Android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {

                mapView.setMyLocationEnabled(true); 
            }
        }
        else
        {
            mapView.setMyLocationEnabled(true);

        }
0
Regis_AG
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}

に変更する

Android.manifest.permission.ACCESS_FINE_LOCATION
0

実行する前にこれを試してください。アクセスする権限があることを確認してください。

try {
    location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} catch (SecurityException e) {
   dialogGPS(this.getContext()); // lets the user know there is a problem with the gps
}
0
Bye Webster

変化する

new String[]{Manifest.permission.ACCESS_FINE_LOCATION}

これに

new String[]{Android.Manifest.permission.ACCESS_FINE_LOCATION}

問題は解決されます。

0
Hassnain Jamil