Blogタオソフトウェア株式会社によるAndroidアプリ開発についてのノウハウなどWRITE_EXTERNAL_STRAGEと下位互換のためのmaxSdkVersionKitKatで仕様変更になった外部記憶装置へアクセス権限の記事を、11月にAndroid:KitkatのREAD_EXTERNAL_STORAGEと外部記憶領域というタイトルで書きました。当時は、調査ほやほやで、「下位互換があるから、すぐには使用できない」という纏めになりましたが、きちんと下位互換も考えられていましたので、その解説になります。Level19)での仕様変更により、WRITE_EXTERNAL_STORAGEパミッションが必要な機能はかなり減る事となりました。安心してユーザにアプリケーションを使用してもらうためにも、大変良い仕様変更ですが、今回の仕様変更はKitKatからです。Exceptionが出てしまいます。このため、新しくUses-PermissionにmaxSdkVersion属性が追加されました。以前からあった、の属性のmaxSdkVersionと混同しないように注意してください。Levelの環境では、パーミションの取得はしません。4.4と未満の環境にインストールして、設定画面からアプリケーションが取得している権限を表示してみました。上記のように、同じプログラムにも拘わらず、4.3ではWRITE_EXTERNAL_STRAGE(USBストレージのコンテンツの変更または削除)が表示されていますが、Android4.4では、アプリが取得している権限は何もありません。WRITE_EXTERBAL_STRAGEの下位互換アプリケーションが、外部記憶領域上のアプリケーションディレクトリのみにアクセスしている典型的なアプリケーションは、以下のように記載ができます。Level18以下では、WRITE_EXTERBAL_STRAGEが利用宣言され、読み書き可能になります。Level19)以上では、WRITE_EXTERNAL_STRAGEの利用宣言はされません。OS4.4で正式導入されました。Level18以下では未知のパーミッションとなります。従ってmaxSdkVersionを指定しても、しなくても読み込み権限の取得は出来ませんので、SecurityExceptionは発生します。SecurityExceptionを発生しないようにするには以下の記載となります。Level18以下では、WRITE_EXTERBAL_STRAGEが利用宣言され、読み込みアクセスが可能になります。Level19)以上では、WRITE_EXTERNAL_STRAGEの利用宣言はされず、READ_EXTERNAL_STRAGEのみ利用宣言される事になります。<uses-permission>まとめと宣伝このmaxSdkVersion情報ってあまり情報として出てこなくて、知らない人も多いと思います。RiskFinderには組み込まれており、WRITE_EXTERNAL_STRAGEの記載を見つけると、「maxSdkVersion属性入れたほうがいいよ」と教えてくれます。Tokyoで登壇してきました。Securityのスライドをアップしました。2018に当選しましたので行ってきます。AutoFillに潜む危険性の講演資料をアップしました。ファンディングは90%達成リスクファインダー株式会社はじめました。Tokyoで登壇してきました。Securityのスライドをアップしました。2018に当選しましたので行ってきます。AutoFillに潜む危険性の講演資料をアップしました。