11

さまざまなベンダーの Android デバイスがたくさんあります。

/mnt/sdcard を内部ストレージに、/mnt/extsd を外部ストレージに接続するものもあれば (シナリオ 1)、/mnt/sdcard を外部ストレージに接続するものもあります (シナリオ 2)。

Android API がこのパスへのハンドルを提供するため、2 番目のシナリオは標準的だと思います。ここでの問題は、シナリオ 1で許可を得て均等に/mnt/extsdなることです。readonlyWRITE_EXTERNAL_STORAGE

これは、実際の外部 SD カードからのみデータを読み取ることができ、書き込むことができないことを意味します。

extsd フォルダーに書き込むことができるようにするための回避策はありますか?

4

3 に答える 3

4

ルート化されたデバイスでは、/system/etc/permissions/platform.xml を変更して権限の問題を「修正」できます。以下は私のために働いた:

  • adb プル /system/etc/permissions/platform.xml
  • 次のように media_rw が WRITE_EXTERNAL_STORAGE 権限に含まれるように platform.xml を変更します。

    <permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
       <group gid="sdcard_rw" />
       <group gid="media_rw" />
    </permission>
    
  • adb push platform.xml /system/etc/permissions/platform.xml

  • デバイスを再起動する
于 2013-05-09T21:23:59.520 に答える
4
Environment.getExternalStorageState() returns path to internal SD mount point like "/mnt/sdcard"

Environment.getExternalStorageDirectory()デバイスの製造元が「外部ストレージ」と見なしたものを指します。一部のデバイスでは、これは SD カードなどのリムーバブル メディアです。一部のデバイスでは、これはオンデバイス フラッシュの一部です。ここで、「外部ストレージ」とは、少なくとも Android 2.x 以降では、「ホスト マシンにマウントされたときに USB 大容量ストレージ モードを介してアクセスできるもの」を意味します。

But the question is about external SD. How to get a path like "/mnt/sdcard/external_sd" (it may differ from device to device)?

Androidには、前述のように外部ストレージ以外に「外部SD」という概念がありません。

デバイス メーカーが外部ストレージをオンボード フラッシュにすることを選択し、SD カードも搭載している場合は、そのメーカーに連絡して、SD カードを使用できるかどうか (保証されていません) とそのルールについて確認する必要があります。使用するパスなど。

于 2013-03-15T07:02:39.143 に答える
0

デバイスへの書き込みアクセスを取得するためにこれまでに見つけた唯一の回避策は、デバイスをルート化することです:(

Samsung は、マニフェスト エントリで回避策を提供しています。

詳細については、次のリンクを参照してください。

http://www.xda-developers.com/android/android-3-2-code-inadvertently-preventing-write-access-to-external-storage/

http://www.chainfire.eu/articles/113/Is_Google_blocking_apps_writing_to_SD_cards_/

抜粋:

Google の AOSP コードには Android 3.2 前後に導入されたバグがあり、OS が USB ストレージを処理する方法に影響を与え、SD カードや USB スティックへの書き込みアクセスを妨げる可能性があるようです。XDA Elite Recognized Developer、シニア モデレーター、およびニュース ライター Chainfire は、ブログ投稿でこの問題を要約しています。

「これまで、アプリはすべての外部ストレージ (ユーザー/グループ「sdcard_rw」) への書き込みアクセスを許可する「WRITE_EXTERNAL_STORAGE」権限を要求していました。これは明らかに、プライマリ外部ストレージへの書き込みアクセスのみを許可するように変更されました。 「WRITE_MEDIA_STORAGE」と呼ばれる 2 番目の権限が導入され、他の外部ストレージ (ユーザー/グループ「media_rw」) へのアクセスが許可されます。

問題は、サード パーティに実際にこの許可が与えられることはなく、通常、この許可が与えられるのはシステム アプリとデバイス メーカーが提供するアプリだけです。例外はありますが、一部のデバイスではサードパーティのアプリにこの許可が与えられるようですが、AOSP の情報筋によると、許可されないことは確かです。」

于 2013-03-19T07:07:41.027 に答える