2

私は公式のAndroidブログでこれを読みました:

パーミッションの変更 Marshmallow では、パーミッションがインストール時からランタイムに移動しました。これは SDK 23+ の必須の変更です。つまり、Android 6.0 をターゲットとするすべての開発者とすべてのアプリケーションに影響します。

では... Android 6.0 (api 23) でコンパイルしても、Android 4.4 (api 20) をターゲットにすると、古いパーミッション システムを維持できますか?

私はこれを行うことを意味します:

    compileSdkVersion 'Google Inc.:Google APIs:23'
    buildToolsVersion "23.0.1"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 20
    }

今のところ私のプロジェクトの必要条件は、古い許可システムを維持し、sdk バージョン 20 をターゲットにすることです (古い通知システムを維持する必要があり、20 を超える SDK バージョンをターゲットにする場合は、新しい通知システムを使用する必要があるため)。それで... SDKバージョン20をターゲットにした場合、Api 23でコンパイルして古い許可システムを維持できますか?

ありがとう

4

1 に答える 1

7

targetSdkVersionはい、 <23 に設定されている場合は、(Android 6.0 でも) 古い許可システムが使用されます。ただし、Android 6.0 のユーザーは、後で[設定]から個々のアクセス許可を手動で無効にすることができます。Android 6.0 では、ユーザーがそれを行おうとすると警告が表示されますが、取り消すことはできます。

問題は、ユーザーが許可を取り消した後にアプリがクラッシュするかどうかです。

targetSdkVersion23 未満のアプリケーションで取り消された権限ユーザーを必要とする関数を呼び出すと、例外はスローされません。代わりに、単に何もしません。値を返す関数の場合、場合によって null または 0 を返します。関数を呼び出してもアプリケーションはクラッシュしませんが。これらの戻り値を使用してアプリケーションが次に行うことによって、依然としてクラッシュする可能性があります。

于 2016-02-02T07:19:06.070 に答える