Android 6のアプリを準備しようとしていますが、許可をリクエストして確認する必要があります。
私はドキュメントから次のことを試しました:
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITE_CALENDAR);
問題は、Android StudioがCannot resolve method 'checkSelfPermission'
。
私はすでにappcompatとサポートlibを含めました。 ContextCompat
はASに既知ですが、メソッド自体は不明です。私は何が間違っているのかわかりません-別のプロジェクトでこのメソッドを書くことができ、それが認識されます。
TargetAPIは23です。
誰もが解決策を知っていますか?
なんてこった-なんて馬鹿げた間違いだ。
ASはsupportlibをjarとしてインポートし、このjarは2014年のようなものでした。jarimportを実際の依存関係に置き換えただけで、動作していることがわかりました。
助けてくれてありがとう!
さまざまなシナリオで呼び出す必要がある方法は次のとおりです。
活動の場合:
ContextCompat.checkSelfPermission(MyActivity.this,
Manifest.permission.WRITE_CALENDAR);
フラグメントの場合:
ContextCompat.checkSelfPermission(getActivity(),
Manifest.permission.WRITE_CALENDAR);
ユーティリティクラスがコンテキストを使用する場合:
ContextCompat.checkSelfPermission(context,
Manifest.permission.WRITE_CALENDAR);
詳細については、以下のコメントをご覧ください
Fragment
にはgetActivity().checkSelfPermission
を使用します
Activity
にはthis..checkSelfPermission
または単にcheckSelfPermission
を使用します
@SuppressLint("NewApi")
私は自分のページの上でこれを使用しましたが、私にとってはうまくいきます...
同じ問題がありました。私の場合、古いappcompatバージョンを使用していたライブラリを追加すると、コンパイラは適切なappcompatを見つけることができませんでした。
問題を修正するために、犯人ライブラリのインポート中にオプション{transitive = false}を追加しました。これにより問題が修正されました。
今私が持っています:
api ('org.library.using.old.appcompat:1.0.1') {transitive = false}
馬鹿げているかもしれませんが、間違った場所にある可能性があります。同じ問題がありました。太字の部分は、元々コードを配置した場所です。斜体部分は、それが消えていたはずの場所です
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Log.i("-----------", location.toString());
}
**if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {'some code'}**
}; 'End of LocationListener method
*if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) { 'some code'}*