サムスンギャラクシーネクサスで奇妙な問題が発生しています。アプリケーションで作成および書き込まれたファイルは、電話自体で(ESファイルエクスプローラーを介して)アクセスすると正常に表示されますが、PCで同じファイルを表示しようとすると(電話がUSB経由で接続されている場合)、0バイトとして表示されます(開いたときは空です)。
これらは通常のテキストファイルである必要があります。これは、新しいFile(dir、filename)を使用して作成し、PrintWriterのwriteメソッドを使用して書き込みます。また、MediaScannerConnection.scanFileを使用して新しいファイルをコンテンツデータベースに追加しています。
以前のアプリケーション(6か月以上前)で基本的に同じコードを問題なく使用したので、なぜ今は機能しないのか本当に混乱しています。誰かが同様の問題を抱えていましたか?
更新:
まだこれをトラブルシューティングしています...さらに2つの観察結果が私を完全に混乱させています:
別のPCで同じファイルにアクセスしようとしましたが、正常に機能しました。これは、ドライバーの問題である可能性があると思いましたが、ドライバーをまったく変更していないため、それでも奇妙なことになります(以前にこの問題を経験したことはありません)。
以前に作成した別のアプリケーションを使用してファイルを作成してみました。基本的に同じFileIOクラスをファイル作成などに使用します。このアプリケーションではこのような問題は発生しません。
私は同じ問題に直面しました。これは、MTP(メディア転送プロトコル)の定義方法と関係があります。
MTPにはいくつかの欠点があります。ウィキペディアはそれらを次のようにリストしています:
- ファイルを開くとき、ユーザーはファイルが表示される前にファイルがPCにコピーされるまで待つ必要があります。 (注:ファイルは表示後もPCのハードドライブに残り、デバイスは取り外されます)
- PCからデバイス上にファイルを作成する必要はありません。ファイルをPC上で作成し、コピーする必要があります。
- デバイス上のファイルを編集する必要はありません。編集内容を保存してファイルをコピーし直す前に、ファイルをデバイスからコピーする必要があります。
私の場合、USB経由で電話を接続しているときに取ったスクリーンキャップのサイズは0 kbでした(PCの場合)。しかし、USBを抜き差しすると、これは解決しました。
同じ問題が発生しました。電話を接続するとフォルダが空であると表示されましたが、電話のロックを解除すると、すべてのファイルがコンピュータに表示されました。私はかなり厳しいセキュリティ設定を持っていますが、試してみる価値があります。