0

近くの Wi-Fi ホットスポットを見つける Android アプリを作成しています。ホットスポットの GeoLocations を含む xml ファイルがあります。この xml ファイルは、アプリケーションの res/xml フォルダーにあります。アプリケーションの起動時に、更新された xml ファイルをダウンロードしたいと考えています。2 つの質問があります。

  1. xml ファイルを内部ストレージまたは外部ストレージにダウンロードする必要がありますか? その理由は? xml ファイルを内部ストレージにダウンロードする必要がある場合、どうすればよいですか?
  2. アプリケーションを最初に起動したときに最初に埋め込まれた xml ファイルを使用し、ダウンロードが終了したときに新しくダウンロードした xml ファイルに切り替えることができるようにしたいと考えています。どうすればそれをシームレスに達成できますか?

ありがとう

4

1 に答える 1

1

Android のデータ ストレージに関する Google のページをご覧ください。 http://developer.android.com/guide/topics/data/data-storage.html

XML ファイルは非常に簡単な方法でダウンロードできます。あなたのような別の質問がここで尋ねられました:

Android でファイルをダウンロードし、ProgressDialog で進行状況を表示する

その例では、ファイルは SD カードに保存されます。リファレンス ページで説明されているように、SD カードを指す OutputStream を変更して、プライベート ストレージを指すようにしてください。

FileOutputStream fos = openFileOutput(your_xml_filename, Context.MODE_PRIVATE);

新しい XML への切り替えをできるだけ簡単にするために、XML 関連のすべての機能を 1 つのクラスにカプセル化し、新しい XML に切り替えるための簡単な方法を提供します。例えば、

class XMLUser {
    private Location someLocation;

    public XMLUser(String pathToXml) { 
        readxmlAndSetLocations(pathToXml);      
    }
}

次に、XML ファイルを変更する必要があるたびに、新しい XMLUser オブジェクトを初期化します。そのようです:

XMLUser xmlStuff = new XMLUser(PATH_TO_RES_FILE);
//... do something with it
//... update found
XMLUser xmlStuff = new XMLUser(PATH_TO_PRIVATEDATA_FILE);

もう 1 つの方法は、同じオブジェクトを使用して、XML ファイルから場所を更新することです。

  class XMLUser {
        private Location someLocation;

        public void updateLocations(String pathToXml) { 
            //Read your xml here and update the locations accordingly.      
        }
    }

例えば

XMLUser xmlStuff = new XMLUser(PATH_TO_RES_FILE);
//... do something with it
//... update found
xmlStuff.updateLocations(PATH_TO_UPDATED_XML);

あなたの質問は多種多様な回答を可能にしているため、迅速かつ正確な回答を提供することはできません.

はい、XML データを内部ストレージに保存することをお勧めします。XML ファイルは、問題が発生しないように十分小さいサイズである必要があり、論理的には、アプリの内部機能に関連しています。ユーザーが改ざんしてはならないもの。さらに、内部ストレージは取り外しできないため、ユーザーが SD カードを変更した場合でも、更新されたデータはそのまま残ります。

于 2012-04-20T10:11:35.460 に答える