問題タブ [android-external-storage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 外部メモリ デバイス (sd または usb) にある .dat ファイルの内容を文字列に保存したいですか?
この質問または同様の質問が既に解決されている場合は、あらかじめお詫び申し上げますが、このサイトや他のサイトでの検索では、問題を解決できませんでした。
質問のタイトルが示すように、外部 USB または SD カードにある *dat ファイルの内容をメイン アクティビティ内の String 変数に保存して、さらに処理したいと考えています。私はJavaおよびAndroidアプリの開発に不慣れで、数日前にいじり始めたばかりです(私は組み込み設計/ロボット工学のエンジニアであり、マイクロコントローラー用のc / c ++でファームウェアを書いた経験しかありません)。
誰かがこれを行う方法を提案したり、コード例を提供したり、ドキュメントやライブラリ (またはクラス) へのリンクを提供したりして、物事を簡素化するために使用できますか? 私はこれに数時間取り組んでおり、Web からさまざまなコード スニペットを試しています。できればあなたの反応を説明してください。私はJava、アプリ開発、およびAndroidに関しては初心者です。
また、ファイルの読み取りを許可するためにマニフェストを編集する必要がありますか? もしそうなら、どのように?
前もって感謝します、
カレブ
java - Androidでリムーバブルストレージのdcimディレクトリにアクセスするには?
外部ストレージとリムーバブル ストレージの違いを理解しています。
写真にアクセスできるアプリを作成しています (これまでのところ、基本的にはファイル ブラウザーのみ)。写真は現在、リムーバブル ストレージに保存されています。
Environment.getExternalStorageDirectory() を使用すると、外部の sdcard0- が返されます。リムーバブル ストレージは sdcard1 です。これにアクセスするにはどうすればよいですか?
助けてくれてありがとう!
android - Android スマートフォンの内蔵メモリは、内部ストレージと外部ストレージのどちらと見なされますか?
ここの Android ドキュメントには、次のように記載されています。
「すべての Android 互換デバイスは、ファイルの保存に使用できる共有の「外部ストレージ」をサポートしています。これは、リムーバブル ストレージ メディア (SD カードなど) または内部 (非リムーバブル) ストレージのいずれかです。外部ストレージに保存されたファイルストレージは誰でも読み取り可能であり、USB 大容量ストレージがコンピューター上のファイルを転送できるようにすると、ユーザーが変更できます。」
これは、内蔵メモリも外部と見なされることを意味しますが、同じドキュメントにも次のように記載されています。
「外部ストレージ上のファイルを読み書きするには、アプリが READ_EXTERNAL_STORAGE または WRITE_EXTERNAL_STORAGE システム権限を取得する必要があります」
manifest.xml ファイルで許可を求めることなく、内部ストレージのコンテンツを読み取ることができます。そのために次のコードを使用しています。
この二つの主張は矛盾していませんか? 内蔵ストレージは内部ですか、それとも外部ですか?
android - Android アプリは /mnt/asec または /mnt/obb への書き込み権限を取得できますか?
外部SDカード(デバイスのフラッシュメモリの「外部」ではなく外部)で書き込み操作を実行するアプリケーションがありますが、ここで徹底的に議論されており、他のかなりの数の質問があるようです。さまざまなメーカーのすべての電話で機能するSDカードのマウントポイントを取得するための一般的な方法/サポートされているAPIはありません。
そのことを念頭に置いて、以下のコードのような何かを実行して、外部ストレージ デバイスがマウントされているかどうか、およびその場所を確認する必要があります。
私は間違っている可能性がありますが、SD カードが完全に空であり、最後の状態(file.listFiles().length > 0)
が返される可能性があることは理解していfalse
ます。だから私はそれをチェックする代わりにlength
、私は追加すると思っfile.canWrite()
た. それは、現在テストしている電話で期待どおりに機能しました(Motorola Atrix MB860-古いことはわかっていますが、私の要件の1つは、Gingerbread、API 9以降のバージョンと互換性を持たせることです)が、かどうかはわかりませんその条件は、両方とも読み取り可能なディレクトリであるため、最近のまたはそうでない他の電話にtrueを返す/mnt/asec/
か/mnt/obb
、最初の2つの条件も満たす可能性があります(また、何かが書き込まれている場合(50MB以上のサイズのファイルのように)に戻るtrue
ことさえあります)。(file.listFiles().length > 0)
/mnt/obb
要するに、私が知る必要があるのは、アプリがこれら 2 つの場所への書き込み許可を持っているのか、それともシステムだけがそのような許可を持っているのかということです。はいの場合、取得したい最終パスからそれらを除外するために他に何を確認できますか: デバイスにインストールされている外部 SD カード?
助けてくれてありがとう!
android - APK を SD カードにインストールするとどうなりますか?
x.apkという名前の APKを Android フォンにインストールするとします。
デフォルトでは、少なくとも 2 つのことが起こります。
x.apkを にコピーし
/data/app
ます。/data/data
プライベート ストレージ スペースとしてパッケージ フォルダーを作成します。
ただし、x.apkを SD カードにインストールする場合は、
SDカードに対応するフォルダ/data/app
と/data/data
SDカード上のフォルダは何ですか?
android - API +11 で実行されているすべてのデバイスに外部ストレージが存在しますか?
Androidダウンロードマネージャーを使用します。外部ストレージの存在を気にする必要はありますか? 外部ストレージがないデバイスはありますか?
リムーバブルSDカードと外部ストレージは別物だと思います。私は正しいですか?
android - 外部ストレージのファイルを ACTION_VIEW できません
Android フォンの外部ストレージにファイルがあります (この場合はエミュレートされています)。それへのパスを知っている、および/またはそれをFile
表すオブジェクトがある場合、を使用Intent
して適切なアプリで開くにはどうすればよいですか?
私が最初に試したのは:
私はそれをテストし、アプリの別の部分に移ったので、これはある時点で機能していたと確信しています. 今では常に をスローしActivityNotFoundException
ます。file.exists()
ファイルが戻ってきて、それが正しいファイルであることはわかっているため、ファイルは間違いなく存在しtrue
ますが、自発的にそれを開くアプリはありません。
この方法で開くことができるファイルの種類は .pdf だけです。Adobe Reader が選択されていますが、デバイスにインストールされている PDF リーダーはこれだけではなく、デフォルトに設定されていません。Adobe Reader は、オンラインにある PDF ファイルを開くこともできることに気付きました (これは、Chrome で PDF をダウンロードする代わりに表示されます)。これは、場所がリモートであると考えられているため、Adobe Reader のみが に一致するものとして検出されていることを示唆していIntent
ます (ただし、Chrome やその他のファイル ダウンロード アプリが代替としてリストされていないため、オンラインではありません)。
また、MIME タイプを明示的に記述しようとしました。
これにより、Intent
適切なアプリに一致するようになりますが、それらはすべて実際にファイルを開くことができません。これは、MIME タイプのハードコードされた文字列とMimeTypeMap.getSingleton().getMimeTypeFromExtension(extension)
、ファイル拡張子を渡す を使用してテストしました。さまざまな種類のファイルについて、適切なアプリが提案されましたが、それらはすべてファイルを開くことができませんでした。
編集:
MIME タイプを明示的に設定することはうまくいきますが、私は非常にばかげた間違いを犯しました。おそらく回答で説明する必要があります。
私が開こうとしたファイルはインターネットからのもので、DownloadManager
. その機能を使用して、ダウンロードが完了すると通知を表示します。これらの通知のいずれかをクリックすると、ファイルが完全に開きます。完了通知がクリックされIntent
たときに発生するソースコードを見つけようとしましたが、うまくいきませんでした。DownloadManager
また、ES File Explorer などのアプリは、ファイルがダウンロードされた場所に移動して問題なく開くことができます。私は何を間違っていますか?
外部ストレージ上のファイルを ACTION_VIEW できなくなっただけですか? 私のアプリは一時的にファイルを内部ストレージにダウンロードしますが、これらは問題なく開くことができます:
また、過去に機能していたものについては、Eclipse、SDK Tools プラグイン、および Android SDK 自体を更新すると、元のソリューションが機能しなくなった可能性がありますか?