0

アプリでファイルの「インポート - エクスポート」プロセス (gmail クライアントを使用) を設定しました。これにより、ユーザーは相互に、またはデバイス間でのみ kml ファイルを共有できます。最もよく理解できるように、ユーザーがたどる手順を読んでください。

ファイル出力プロセス:
1) ユーザーが目印を地図に追加します。
2) ユーザーは目印を kml 形式で /sdcard にユーザー定義の名前 (「Saved.kml」としましょう) で保存します。
3) ユーザー「エクスポート」Saved.kml を gmail の添付ファイル経由で。

処理中のファイル:
1) ユーザーが gmail の添付ファイルをデバイスのダウンロード フォルダーに保存します。
2) ユーザーは [KML のインポート] を選択し、リストから Saved.kml を選択します。
3)すべてが完璧に機能します!目印は、エクスポート/期待どおりにマップに表示されます!

1 つの大きな欠陥を除いて... これは、インポート/エクスポートに同じデバイスを使用する場合にのみ機能します。私は 2 つのデバイスを持っています。Nexus 7 と LG Motion のどちらでも問題なく動作します。しかし、私はそれを2つの間で機能させることができず、非常にイライラし始めています. これが私が試したことです:

マニフェストの変更:
android:sharedUserId="com.xxx.xxx"
android:sharedUserLabel="@string/sharedUserLabel"

Runtime.getRuntime().exec( "chmod 444 Saved.kml" ); // (Android レベル 4 をサポートする必要があります)

Saved.kml を解析する直前にこれを試してみました -- importFileIn.renameTo(importFileOut); ファイルの名前は変更されますが、それでも解析に失敗します。

adb シェルの表示: -rw-rw-r-- root sdcard_rw 867 2013-02-28 10:39 Saved.kml -rw-rw-r-- root sdcard_rw 867 2013-02-28 11:44Re Savednamed.kml

「adb push」を使用しましたが、プッシュされたファイルにまったく同じユーザー ID/権限が表示されましたが、まだ読み込まれません。

これを見つけたとき、私は公開前の土壇場でテストを行っていました。同じデバイスでのテストでは、単一の問題はありませんでした...助けてください。

4

2 に答える 2

0

申し訳ありませんが、スタック オーバーフローを通じてこの質問をすることで、私が熟考してきたことをすべて入力し、最終的にこれはファイルのアクセス許可の問題ではないと信じるようになりました。Log.i を使用して例外を出力したところ、これは実際には「ファイルが見つかりません」というエラーであることがわかりました。もちろん、これはまったく別のものです!パスエラー、問題解決! ご辛抱いただきありがとうございます。

于 2013-02-28T19:40:23.323 に答える
0

より具体的に
は、デバイスの「ダウンロード」フォルダー内のファイルからデータを取得していました。
Nexus 7 では、「/storage/emulated/0/Download」です。
LG Motion では、"/sdcard/Download" です。
「root.getAbsolutePath() + "/download" を使用することで、私の問題は解決しました。

于 2013-03-02T14:30:29.973 に答える