2017-09-29 31 views
-1

私はAndroidで最後の既知の場所を取得しようとしています。 私はこれを持っています:シンボルを解決できませんContextCompat.checkSelfPermission()

public int permissionCheck = ContextCompat.checkSelfPermission(MainActivity.this, 
       Manifest.permission.ACCESS_FINE_LOCATION); 

それは動作します。しかし、すぐに私が持っている:

if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 

これは動作しません。

Androidのスタジオは言う:

が、私は理由を理解していないシンボルcheckSelfPermission()

を解決できません。

+1

は、おそらくあなたはthis' 'で匿名クラスを参照している、あなたは、'それを匿名内部クラスからthis'を使用している場合は、あなただけのMainActivity.this –

+0

が必要その内部クラスを参照します。したがって、あなたは明示的に活動の参照を 'MainActivity.this'として使う必要があります。時には実行時のアクセス権を扱うのが難しい場合があります。そのためには、https://github.com/nabinbhandari/Android-Permissionsでライブラリを用意しました。このライブラリを試して時間を節約することができます。 ;) –

+0

あなたのアクティビティはAppCompactActivityを拡張しますか? – CoXier

答えて

-1

使用ActivityCompat.checkSelfPermission(this,<permission>);

+0

checkSelfPermissionはまだエラーです。 –

+0

は 'if(ContextCompat.checkSelfPermission(this、Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){ }は同じクラスまたはアクティビティにあります。 –

+0

** [Million Monkeys Programming Style]の素晴らしい例(https://en.wikipedia.org/wiki/Programming_by_permutation)** ... 'ActivityCompat'には' checkSelfPermission'がありません... 'checkSelfPermission'は実際に' ContextCompat's'メソッド(ActivityCompatはContextCompatから派生しています)... ** **明らかに助けにならないでしょう!** – Selvin

-1

これを試してください。

if(ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED &&ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) 

{//アクセス権を許可}

+0

** [Million Monkeys Programming Style]の素晴らしい例(https://en.wikipedia.org/wiki/ ** ActivityCompatは 'checkSelfPermission'を持っていません...' checkSelfPermission'は実際には 'ContextCompat's'メソッドです(ActivityCompatはContextCompatから派生しています)。** **明らかに助けにならないでしょう!** – Selvin

+0

@Selvinはあなたのレビューに感謝しますが、まずは間違いを見つけ出すのではなく、答えを与えるための勇気とコンセプトを持っていてください。 –

+0

*まず、あなたは勇気とコンセプトを持って、誰かの間違い(これは「コンテキスト」ではない)...これは有効な答えではありません...(しかし、百万円のプログラミングスタイルの例) – Selvin

関連する問題