2017-04-26 10 views
0

Androidアプリのコードを最近更新して、Android 6.0+のアクセス権をリクエストしました。 しかし、今私はどのようにパーミッションをチェックしたいのかというジレンマに直面しています。ランタイム許可を要求しているときにAndroidバージョンを確認する

23歳以前のバージョンでは、インストール時に権限が付与されているため、権限を確認する必要がないため、権限を確認する前にOSのバージョンをオンラインで確認していました。

は今、私のチェックは、次のようになり

if(checkPermissions()){ 
    doThings(); 
} else { 
    requestPermissions(); 
} 

が、私はこれを追加するための努力を取る必要がありますか?私は私の理解からのようなコードに後者を加えるのポイントが表示されていない

if (Build.VERSION.SDK_INT >= 23) { 
    if(checkPermissions()){ 
     doThings(); 
    } else { 
     requestPermissions(); 
    } 
} else { 
    doThings(); 
} 

、アンドロイドの古いバージョンでは、最初のサンプルコードにうまく実行することができます。

この場合、Androidのバージョンを確認するとメリットはありますか?

答えて

2

これを追加するにはどうすればよいですか?

if (Build.VERSION.SDK_INT >= 23) { 
    if(checkPermissions()){ 
     doThings(); 
    } else { 
     requestPermissions(); 
    } 
} else { 
    doThings(); 
} 

checkPermissions()場合はすべき、とrequestPermissions()は厳密にAPI 23以降のクラスやメソッドを呼び出します。そうでなければ、望むようにすることもできます。

このすべてが私に尋ねます。この場合、Androidのバージョンを確認するメリットはありますか?

私が知る限り、上記で述べたことを考えれば、それ自体で検証する必要はありません。したがって、このチェックはコードを乱雑にする消耗品のifです。

2
ContextCompact.checkSelfPermission 

リターンは常にPERMISSION_GRANTEDアンドロイドのバージョンで< 23. だから、チェックビルドバージョンを回避することができます。 詳細情報here

+0

あなたが提供したリンクに明示的に書かれていないのですが、あなたが実際には持っていないパーミッションをチェックしていれば奇妙な動作になります。アンドロイド23未満では無意味です。質問に答えませんが、情報に感謝します! –

関連する問題