私は最後にユーザーの所在地を知りたいと思っています。これを行うために、私はすでにマニフェストXMLファイルで以下のパーミッションを宣言しています。マニフェストで許可宣言が認識されない
Code should explicitly check to see if permission is available.
私はこの点を見ませんでしたが、私はとにかく次のチェックを追加しました:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
しかし、以上のコードで
は、それが次のエラーを示し続けています。if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
これにより、エラーは表示されなくなりますが、アプリケーションを実行すると終了します。どのような許可がありますか?私がAndroidで作業して以来、しばらくしていましたが、この追加の小切手を処理する必要はありません。マニフェストのパーミッション宣言で十分でした。私が逃していることをアドバイスしてください。
コード:
LocationManager locationManager;
String provider;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
provider = locationManager.getBestProvider(new Criteria(), false);
Location location = null;
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
Log.i("location", "returned"); // This log will occur
return; //return will occur
}
location = locationManager.getLastKnownLocation(provider); //this is the line that requires permission
Log.i("location", "This log will not occur");
}
あなたはどのAndroidバージョンを実行していますか?注意してください許可許可は、アンドロイド6で変更され、ドキュメントを読んでください。 – Olayinka
@Olayinka私は現在、API 23を使用しています。 – JasSy