Google の AOSP コードには、Android 3.2 あたりで導入されたバグがあるようです。このバグは、OS による USB ストレージの処理方法に影響を与え、SD カードや USB スティックへの書き込みアクセスを妨げる可能性があります。 XDA Elite 認定開発者、シニア モデレーター、および ニュースライターチェーンファイア 彼の文章でこの問題を要約している ブログ投稿:
以前は、アプリは「WRITE_EXTERNAL_STORAGE" アクセス許可。への書き込みアクセスを許可します。 全て 外部ストレージ (ユーザー/グループ "sdcard_rw"). これは明らかに、への書き込みアクセスのみを許可するように変更されました。 主要な 外部記憶装置。 「」と呼ばれる 2 番目の権限が導入されました。WRITE_MEDIA_STORAGE"、他の外部ストレージ (ユーザー/グループ "メディア_rw").
問題は、実際にはサードパーティにはこの権限が付与されず、通常はシステム アプリとデバイス メーカーが提供するアプリのみにこの権限が付与されることです。 例外があり、一部のデバイスではサードパーティのアプリにこの権限が与えられるようですが、AOSP ソースによると、確かにそうはなっていないようです。
Chainfire が問題を調査していると、次のコードを発見しました。 /system/vold/Volume.cpp それは明示的に次のように述べています:
if (プライマリストレージ) {
// 特殊な場合 プライマリSDカード.
// このために、SDCARD_RW グループへの書き込みアクセスを許可します。
gid = AID_SDCARD_RW;
} それ以外 {
// 二次的な外部ストレージについては、物事をロックしたままにします。
gid = AID_MEDIA_RW;
}
多くのデバイスでは、内蔵フラッシュが「プライマリ SD カード」とみなされます。 の 本物 その後、SD カードは 2 番目の外部ストレージとなり、アクセス不可能な "WRITE_MEDIA_STORAGE" 許可。
Chainfire は質問を次のように送信しました。 Android 開発者のオフィスアワー チームで話し合い、最終的には ライブハングアウト 4月11日。 残念ながら、これは複雑な問題であり、この質問は番組が生放送される 1 時間前に提起されたものであるため、ハングアウトに参加していた Google エンジニアは本当の答えを提供することができませんでした。 しかし、彼らはこの問題の真相を究明し、後日Chainfire(そして私たち)に連絡すると約束しました。
また、Chainfire によると、この問題は実際には SGS2 用の ICS ビルドにも存在しますが、Samsung は「非常に醜い権限ハックを使用してそれを回避しました":
ここに見えるのはサムスンです 便乗 WRITE_MEDIA_STORAGE 権限を WRITE_EXTERNAL_STORAGE 権限に変更することで、アプリで前述の問題が発生しなくなります。
Google が接続された SD カードと USB スティックをサードパーティ製アプリに対して読み取り専用に制限することを意図しているかどうかはまだわかりません。 ただし、このコードと付随するメモが Google の最初のものだったらどうなるかという、不穏な考えが生まれます。 外部ストレージに対して何らかの書き込み保護を実装し、モバイルの利用をさらに制限する段階 自由? これが本物のバグであることを祈るばかりです。なぜなら、自由こそが私たち皆が危険を避ける理由の 1 つだからです。 暗黒面.
[注意を喚起して協力してくれた Chainfire に多大な感謝を!]