1. ホーム
  2. android

[解決済み] Call requires API level 23 (current min is 14): android.app.Activity#requestPermissions,checkSelfPermission [duplicate].

2022-02-19 08:30:04

質問

<余談
この質問には、すでにここで回答があります :
クローズド 5年前 .

私はランタイムパーミッションを追加しようとしているアンドロイド(6.0.1)API 23、私はSDKのバージョンを使用する場合(6.0.1)。 minとtargetの両バージョンとも23 のような感じでうまくいきます。

    <uses-sdk
                android:minSdkVersion="23"
                android:targetSdkVersion="23" />

android:minSdkVersion (less than 23)を変更した場合。

例えば、こんな感じです。

以下のようなエラーが発生します。

呼び出しにはAPIレベル23が必要です(現在の最小値は14)。 android.app.Activity#requestPermissions,checkSelfPermission。

以下の2つの方式について。

1)requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS)

2)checkSelfPermission(permission)

を試してみました。 ActivityCompat.checkSelfPermission()ContextCompat.checkSelfPermission() が両方使えない。

何が足りないのか、理解できなかった。

どのように解決するのですか?

target >=23をチェックするか、以下の行をメソッドの上に追加してください。

@TargetApi(Build.VERSION_CODES.M)

例えば、ストレージのアクセス権をチェックするのであれば、この機能を参照することができます。

@TargetApi(Build.VERSION_CODES.M)
    public boolean CheckStoragePermission() {
        int permissionCheckRead = ContextCompat.checkSelfPermission(context,
                Manifest.permission.READ_EXTERNAL_STORAGE);
        if (permissionCheckRead != PackageManager.PERMISSION_GRANTED) {
            if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context,
                    Manifest.permission.READ_EXTERNAL_STORAGE)) {
                // Show an expanation to the user *asynchronously* -- don't block
                // this thread waiting for the user's response! After the user
                // sees the explanation, try again to request the permission.
                ActivityCompat.requestPermissions((Activity) context,
                        new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                        Define.PERMISSION_STORAGE);
            } else {
                // No explanation needed, we can request the permission.

                ActivityCompat.requestPermissions((Activity) context,
                        new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                        Define.PERMISSION_STORAGE);

                // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
                // app-defined int constant. The callback method gets the
                // result of the request.
            }
            return false;
        } else
            return true;
    }