1

自分の Web サイトから文字列データを取得できますか? 実際、市場で新しいバージョンが利用可能になった場合に、アプリを更新するようユーザーに促すというアイデアを思いつきました。このために、アプリのリンクがあるウェブサイトを用意しています。アプリを更新するたびに、バージョン文字列をウェブサイトに掲載します。今、その文字列データを何らかの方法で取得し、それをバージョン コードと比較したいと考えています。両方に違いがある場合、ユーザーは更新を求められます。

たとえば、アプリのバージョン コードが 21 で、Web サイト文字列のデータが 22 の場合、アプリの新しい更新が利用可能であり、ユーザーはそれをダウンロードするように求められます。その文字列データをウェブサイトに配置する方法と、Androidアプリでそのデータを取得する方法を教えてください。事前にサンクス。

4

3 に答える 3

0

アプリを Google Play で公開する場合は、Google Play が処理します。

ただし、この更新メカニズムが組み込まれているアプリストアを経由しない場合は、静的ページを任意の Web サーバー (Apache など) でホストし、URL を使用してそのページに接続して値を取得できます。

于 2013-06-18T05:37:37.637 に答える
0

はい、サイトに Checking Updates WebService を追加することで、これを行うことができます。
アプリケーションの更新を確認したい場合、アプリケーションはその Web サービスから Method を呼び出します。これは、代わりにバージョンを返します。次に、それと比較して Update を実行できます。

于 2013-06-18T05:37:53.933 に答える
0

私はあなたが探しているのと同じ機能を使用しています。MainActivity の OnCreate で networkUpdate() を呼び出しました。

  1. この関数は、別のスレッドを作成し、最新のバージョン番号をオンラインで取得します。
  2. このバイナリのバージョン番号を取得する
  3. トーストにカスタム メッセージを表示する (新しいバージョンのリマインダー)

オンライン テキスト ファイル

{"version":"1.2","message":"News version of XXX is available. Please download at Google Play"}

アンドロイドのソースコード

    private Handler m_handler;
@Override
    protected void onCreate(Bundle savedInstanceState) {

    ...............

    m_handler = new Handler();  //for main thread
    networkUpdate();
    }

private void networkUpdate(){ 


    Thread t = new Thread(new Runnable() {

          @Override 
          public void run() { //heavy loading 
              ObjectMapper mapper = new ObjectMapper();
              try {
                  HttpClient client = new DefaultHttpClient();
                    HttpGet request = new HttpGet(
                            "http://xxx/version.txt");
                    HttpResponse response = client.execute(request);
                    String retSrc = EntityUtils.toString(response.getEntity());

            JsonNode networkJson =  mapper.readTree(retSrc);
            PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
            String version = pInfo.versionName;
            String networkVersion = networkJson.path("version").textValue();
            if(Float.valueOf(version) < Float.valueOf(networkVersion)){
                m_updateMessage = networkJson.path("message").textValue();
            }
            System.out.println(version + "v "+ networkVersion + " m " +networkJson.path("message").textValue());
            } catch (Exception e) {
                Log.e("network update", "read version json", e);
            }
              m_handler.post(new Runnable() {

          public void run() { //main thread

              if(m_updateMessage != null){
                  Toast.makeText(MainActivity.this, m_updateMessage, Toast.LENGTH_LONG).show();
              }

          } }); } }); t.start();


}   
于 2013-06-20T03:55:17.440 に答える