web-dev-qa-db-ja.com

メソッドcheckSelfPermissionを解決できません

Android 6のアプリを準備しようとしていますが、許可をリクエストして確認する必要があります。

私はドキュメントから次のことを試しました:

int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITE_CALENDAR);

問題は、Android StudioがCannot resolve method 'checkSelfPermission'

私はすでにappcompatとサポートlibを含めました。 ContextCompatはASに既知ですが、メソッド自体は不明です。私は何が間違っているのかわかりません-別のプロジェクトでこのメソッドを書くことができ、それが認識されます。

TargetAPIは23です。

誰もが解決策を知っていますか?

13
Phil

なんてこった-なんて馬鹿げた間違いだ。

ASはsupportlibをjarとしてインポートし、このjarは2014年のようなものでした。jarimportを実際の依存関係に置き換えただけで、動作していることがわかりました。

助けてくれてありがとう!

15
Phil

さまざまなシナリオで呼び出す必要がある方法は次のとおりです。

活動の場合:

 ContextCompat.checkSelfPermission(MyActivity.this,
        Manifest.permission.WRITE_CALENDAR);

フラグメントの場合:

 ContextCompat.checkSelfPermission(getActivity(),
        Manifest.permission.WRITE_CALENDAR);

ユーティリティクラスがコンテキストを使用する場合:

 ContextCompat.checkSelfPermission(context,
        Manifest.permission.WRITE_CALENDAR);

詳細については、以下のコメントをご覧ください

18
Manikanta

FragmentにはgetActivity().checkSelfPermissionを使用します

Activityにはthis..checkSelfPermissionまたは単にcheckSelfPermissionを使用します

4
Ali Akram
@SuppressLint("NewApi")

私は自分のページの上でこれを使用しましたが、私にとってはうまくいきます...

1
Fahad Jadun

同じ問題がありました。私の場合、古いappcompatバージョンを使用していたライブラリを追加すると、コンパイラは適切なappcompatを見つけることができませんでした。

問題を修正するために、犯人ライブラリのインポート中にオプション{transitive = false}を追加しました。これにより問題が修正されました。

今私が持っています:

api ('org.library.using.old.appcompat:1.0.1') {transitive = false}

0
P1x

馬鹿げているかもしれませんが、間違った場所にある可能性があります。同じ問題がありました。太字の部分は、元々コードを配置した場所です。斜体部分は、それが消えていたはずの場所です

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'}*
0
gavin