0

Android と BlackBerry の両方のモバイル アプリを開発しています。

サーバー上のプレーン テキスト ファイルにバージョン コードとバージョン名を含めて、OTA インストール用の最新のアプリケーションをアップロードしました。

アプリ内で、コード バージョンとバージョン名をサーバー上のプレーンテキスト形式から文字列に変換するにはどうすればよいですか。これを実行して、アプリの現在のバージョンとサーバーで利用可能なバージョンを比較できるようにしたいので、サーバー上の新しいバージョンの場合、ユーザーはダウンロードする更新を提供されます。

4

3 に答える 3

2

次の 1 行を含むファイルをサーバーにアップロードするとします。

1.2.3.4

このプロセスは、Android と BB で同様です。

1- サーバーからファイルを取得します。結果として、おそらくバイト配列が得られるでしょう。

2-適切なエンコーディングで文字列に変換します。txt に数字とドットのみが含まれる場合、これらは ASCII 文字であり、ASCII 文字は UTF-8 や ISO-8859 などのほとんどの通常のデフォルト エンコーディングと互換性があるため、エンコーディングはそれほど重要ではありません。したがって、次のように、エンコーディングを処理せずに文字列をインスタンス化できる可能性がありますString fileContent = new String(byte[] downloadedData)。それ以外の場合は、txt ファイルのエンコーディングを事前に確認し、そのエンコーディングで文字列をインスタンス化してください。

3-ドットをセパレータとして使用して文字列を分割します。Android では、次のように実行できます: String[] splitted = String.split(fileContent, '.')、またはStringTokenizer. BB では、CLDC に基づいているため、String のこのメソッドは使用できないため、自分でコーディングするか、十分にテストされたライブラリ (Apache Commons の org.apache.commons.lang3.StringUtils.split など) から 1 つを使用/移植する必要があります。 )。このステップの後、文字列の配列が得られます。各文字列は数値です (例では {"1","2","3","4"})。

Integer.parseInt(splitted[i])4- 同じ長さの int 配列を作成し、 on each elementを使用して、配列内の各文字列を同等の int に変換しますi

5- アプリのバージョンを取得し、同じ手順を実行して int の配列を取得します。BB では、 を呼び出すことができますApplicationDescriptor.currentApplicationDescriptor().getVersion()。マニフェストで指定した内容に応じて、Android では、PackageInfo.versionCodeまたは。PackageInfo.versionName

6- 両方の配列が同じ長さである必要はないことに注意してください。txt に「1.2.3.4」と記述しても、AndroidManifest.xml または BlackBerry_App_Descriptor.xml には「1.2.3」と記述できます。両方の結果の int 配列を同じ長さ (長い方の長さ) になるように正規化し、追加された要素をゼロで埋めます。これで、2 つの int 配列ができました (例では、txtVersion = {1,2,3,4} と appVersion = {1,2,3,0})。バージョンを 1 つずつ比較して繰り返します。ルールは次のとおりです。txtVersion[i] > appVersion[i] の場合、古いバージョンであり、アップグレードが必要です。

于 2012-09-12T10:30:28.483 に答える
1

この回答は、Android の部分のみを対象としています。

アプリケーションからアプリのバージョン番号と名前を取得するには、次のようにします ( @ColorWP.comで提案されているように)

アプリのバージョンと名前を取得する:

String version_number = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
String version_name = getPackageManager().getPackageInfo(getPackageName(), 0).versionNumber;

ネットからファイルを読み取るには:

URL url = new URL("http://www.your.site/your.txt");
URLConnection connect = url.openConnection();

BufferedReader txtreader = new BufferedReader(new InputStreamReader(connect.getInputStream()));
String line = txtreader.readLine();
while (line != null) {
    /* Code to Read your variables in this loop 
      (let us assume these would be:
      server_app_version
      server_app_name)
    */
 }

@ColorWP.comで提案されているように、必ずインターネット許可を追加してください。

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

バージョンを比較します。

if (server_app_version.compareTo(version_number) != 0 || server_app_name.compareTo(version_name) != 0){
    // Notify user to download the new version
}
于 2012-09-12T09:00:05.370 に答える
0

txt ファイルを使用する代わりに、サーバーから JSON を出力することをお勧めします (Android には、便利な JSON デコードおよびエンコード メソッドがいくつか用意されています)。

JSON を出力するページへの URL を Update アクティビティの static final 変数として設定し、任意の方法でダウンロードします。次の回答が役立つ場合があります。

その後、この回答のコードを使用して JSON 文字列を解析します。

サーバーからアプリの最新バージョンを string または int として取得すると、次を使用して取得できるローカル アプリのバージョンと比較できます。

PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
String version = pInfo.versionCode;
// To get the version name use pInfo.versionName

アプリがオンラインに接続できるように、必ず INTERNET 権限を追加してください。

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
于 2012-09-12T09:08:33.927 に答える