マニフェストファイルにアクセス許可を追加すると、以下の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 Studioは、以下のコードでManifest.permission
を解決できないと言っています。
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
なぜこれを行うのでしょうか?どうすれば修正できますか?
最初の部分では、<uses-permission>
Android Devlopersサイトによる を使用する必要があります。 <manifest>
タグではなく、<application>
タグの下で直接アクセス許可を宣言するようにしてください。マニフェストファイル全体を見ることなく、問題が何であるかを知ることは困難です。 上記のリンクをチェックしてください マニフェストでアクセス許可を宣言する方法の詳細について。
ランタイム許可の問題に関して:
Uses-permissionsでは解決できません。
new String [] {Manifest.permission.ACCESS_FINE_LOCATION}
どうして?
Android.Manifest
ではなくmy.app.package.Manifest
を使用していることを確認してください。多くの場合、Android Studioのデフォルトは前者ではなく後者になります。
したがって、新しいコード行は次のようになります。
new String[]{Android.Manifest.permission.ACCESS_FINE_LOCATION};
編集:私は答えを再フォーマットしました。
編集2:Android.Manifest
のインポートには注意してください。 my.app.package.Manifest
もインポートしている場合は、canで問題が発生します。それ以外のimport Android.Manifest
は、この問題を解決するための別の有効な方法です。
これを変える
Manifest.permission.ACCESS_FINE_LOCATION
これに
Android.Manifest.permission.ACCESS_FINE_LOCATION
これを試して! ACCESS_FINE_LOCATIONは次のパッケージで利用できるため、追加:
import Android.Manifest;
使用した場合、同様の問題が発生しました。
ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED
シンボルREAD_CONTACTS
を解決できなかった場合。
ただし、使用時
import Android.Manifest;
READ_CONTACT
を認識し始めました
動的な許可とACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATIONのような許可に取り組んでいる場合"メソッドPERMISSION_NAMEを解決できません"この場合、許可名でコードを記述してからプロジェクトを再構築これは再生成マニフェスト(Manifest.permission)ファイル
マニフェストファイルでses.permissionsが既に正しく設定されている場合(hnilsenで既に述べたように)、次の行を置き換えます。
Manifest.permission.ACCESS_FINE_LOCATION
これによって:
Android.Manifest.permission.ACCESS_FINE_LOCATION
これで問題を解決できます。
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);
}
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
に変更する
Android.manifest.permission.ACCESS_FINE_LOCATION
実行する前にこれを試してください。アクセスする権限があることを確認してください。
try {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} catch (SecurityException e) {
dialogGPS(this.getContext()); // lets the user know there is a problem with the gps
}
変化する
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
これに
new String[]{Android.Manifest.permission.ACCESS_FINE_LOCATION}
問題は解決されます。