Skocz do zawartości

SmallCutePenguin

Użytkownicy
  • Postów

    14
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    1

Odpowiedzi opublikowane przez SmallCutePenguin

  1. A używasz findViewById w kontekście dialog_update.xml czy main.xml?

    PS. Zamiast fill_parent używaj match_parent, to w sumie to samo ale fill_parent jest oznaczony jako przestarzały i może zostać usunięty w przyszłych wersjach Androida.

  2. Oczywiście, że tam coś jest ponieważ ściągasz cały plik (razem z jakimiś jego metadanymi) a nie samą jego zawartość.

    Dodaj sobie taką funkcję

    private String removeUnsupportedCharacters(String input) {
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < input.length(); ++i) {
            if (Character.isDigit(input.charAt(i))) {
                builder.append(input.charAt(i));
            } else {
                Log.e("FORMAT_ERROR", String.format("Unsupported character! '%s'", input.charAt(i)));
            }
        }
        return builder.toString();
    }
    

    I użyj jej w ten sposób

    version = Integer.parseInt(removeUnsupportedCharacters(input));
    

    Dzięki temu w stringu zostaną tylko te znaki, które są cyfrą.

    • Like 1
  3. Kod jest dobry. Problem występuje po stronie pliku test.txt. Sprawdź w jakim kodowaniu go zapisałeś bo parser nie jest w stanie sparsować stringa "1" na liczbę. Jeśli w tym samym kodzie odwołam się do serwera wklej.org to kod zadziała poprawnie.

    import android.content.pm.PackageInfo;
    import android.content.pm.PackageManager;
    import android.os.Handler;
    import android.os.Looper;
    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    
    
    public class MainActivity extends ActionBarActivity {
    
        private TextView hello;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            hello = (TextView) findViewById(R.id.hello_world);
    
            new Thread(new Runnable() {
                @Override
                public void run() {
                    final int versionFromServer = checkVersionOnServer();
                    final int localVersion = getAppVersion();
    
                    final String message;
                    if (versionFromServer > localVersion) {
                        message = "New version is available!";
                    } else {
                        message = "You are using the newest version.";
                    }
    
                    new Handler(Looper.getMainLooper())
                            .post(new Runnable() {
                                @Override
                                public void run() {
                                    hello.setText(String.format("Local version: %d | Server version: %d",
                                            localVersion, versionFromServer));
                                    Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT)
                                            .show();
                                }
                            });
                }
            }).start();
        }
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            return super.onOptionsItemSelected(item);
        }
    
        private int checkVersionOnServer()
        {
            int version = -1;
            URLConnection connection;
            BufferedReader bufferedInputStream;
    
            try {
                //URL url = new URL("http://91.205.75.29//zdunex25/wip/test.txt");
                URL url = new URL("http://wklej.org/hash/72c3e6287be/txt/");
                connection = url.openConnection();
                bufferedInputStream = new BufferedReader(
                        new InputStreamReader(connection.getInputStream(), "UTF-8")
                );
    
                String input = bufferedInputStream.readLine().trim();
                // Log.d("VERSION", String.format("{%s}", input));
                version = Integer.parseInt(input);
    
                bufferedInputStream.close();
            } catch (Throwable t) {
                t.printStackTrace();
            }
    
            return version;
        }
    
        private int getAppVersion()
        {
            PackageManager manager = this.getPackageManager();
            PackageInfo packageInfo = null;
            try {
                packageInfo = manager.getPackageInfo(this.getPackageName(), 0);
            } catch (PackageManager.NameNotFoundException e1) {
                e1.printStackTrace();
            }
            return packageInfo.versionCode;
        }
    }
    
    • Like 1
  4. Mógłbyś pokazać jak wygląda kod po zmianach? Ja osobiście wrzuciłbym do osobnego wątku tylko ten fragment

    boolean bResponse = exists(url);
    if (bResponse==true)
    {
        Toast.makeText(AndroidDownloadFileByProgressBarActivity.this, "Dostępna nowa wersja, pobieranie..." , Toast.LENGTH_SHORT).show();
        new DownloadFileAsync().execute(url);
    }
    else
        Toast.makeText(AndroidDownloadFileByProgressBarActivity.this, "Masz najnowszą dostępną wersję!", Toast.LENGTH_SHORT).show();
    
×
×
  • Dodaj nową pozycję...