Samsung Galaxy Mini (Android 2.3) では、Eclipse 経由で 100 MB 以上の APK をインストールできません (常に何らかのエラーが発生し、実際には何も役に立ちません。通常、外部ストレージに 300 MB 以上の空き容量があるにもかかわらず、不十分なストレージと表示されます)。ストレージ、つまりこの場合は SD カードで、インストール場所は PREFER_EXTERNAL に設定されています)。
そこで、APK を USB 接続で SD カードにコピーし、PC から USB をアンマウントしました。次に、File Manager で APK を開き、インストールしました。インストール前は、承認される WRITE_EXTERNAL_STORAGE パーミッションが表示されません(これが問題なのでしょうか?)。
getExternalFilesDir(null)
実行すると、外部ストレージのフォルダー ( ) に書き込もうとすると、次のエラーが表示されます。
「外部ファイル ディレクトリを作成できません」
logcat に 2 回表示されます。
Environment.getExternalStorageState()
何かをする前に使用すると、MEDIA_MOUNTED
正常に戻ります。「作成できません...」ログが表示される場所と同じ場所で、logcat に記録されます。電話を再起動しても解決せず、PC で USB 接続のオン/オフを切り替えても効果がありません (これらは他のスタックオーバーフローのトピックで言及されています)。
私の Android マニフェストの冒頭は次のとおりです。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="preferExternal"
package="com.example.apps.iik"
android:versionCode="1"
android:versionName="1.0.0" >
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="14" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<uses-feature android:name="android.hardware.screen.landscape" />
APK からインストールすると write_external_storage パーミッションが表示されないのは正常ですか? たぶん、この許可なしにアプリがインストールされますか? しかし、他のデバイスで気づいた限りでは、外部ストレージが「マウントされている」とはまったく認識されません。