1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. AlexRock, 01.08.2011 #1
    AlexRock

    AlexRock Threadstarter Junior Mitglied

    Hallo,
    ich versuche derzeit, eine einzelne App aus einer ListView auszuwählen und diese zu sichern.
    (Ich weiss nicht genau wie ich das Ausgewählte Element der ListView nutze)
    Mein Ansatz dazu sieht folgendermassen aus:

    Code:
        private ProgressDialog backup_app;
    
            backup_app = ProgressDialog.show(MainActivity.this,
                                "Sicherung", "", true, false);
                        Thread backup_app = new Thread(new BackupApp());
                        backup_app.start();
    
    Aufgerufen wird:
    Code:
            private static final String BACKUP_LOC = Environment
                .getExternalStorageDirectory() + "/InfoBackup/";
        private static final int SET_PROGRESS = 0x00;
        private static final int FINISH_PROGRESS = 0x01;
        private ProgressDialog backup_app;
    
        private List<App> mApps;
        private App info;
    
    private class BackupApp implements Runnable {
            private static final int BUFFER = 1024;
    
            private File mDir = new File(BACKUP_LOC);
            private byte[] mData;
    
            public BackupApp() {
                mData = new byte[BUFFER];
    
                /* create dir if needed */
                File d = new File(BACKUP_LOC);
                if (!d.exists()) {
                    d.mkdir();
    
                    // then create this directory
                    mDir.mkdir();
    
                } else {
                    if (!mDir.exists())
                        mDir.mkdir();
                }
            }
    
            public void run() {
                BufferedInputStream mBuffIn;
                BufferedOutputStream mBuffOut;
                Message msg;
                int read = 0;
                info = (App) mAppsList.getSelectedItem();
                String source_file = info.getInstallDir() + info.getPackageName();
                String out_file = info.getTitle() + " " + info.getVersionName()
                        + ".apk";
    
                try {
                    mBuffIn = new BufferedInputStream(new FileInputStream(
                            source_file));
                    mBuffOut = new BufferedOutputStream(new FileOutputStream(
                            BACKUP_LOC + out_file));
    
                    while ((read = mBuffIn.read(mData, 0, BUFFER)) != -1)
                        mBuffOut.write(mData, 0, read);
    
                    mBuffOut.flush();
                    mBuffIn.close();
                    mBuffOut.close();
    
                    msg = new Message();
                    msg.what = SET_PROGRESS;
                    msg.obj = info.getTitle() + " wird gesichert";
                    BackupAppHandler.sendMessage(msg);
    
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                BackupAppHandler.sendEmptyMessage(FINISH_PROGRESS);
            }
        }
    
        private Handler BackupAppHandler = new Handler() {
            public void handleMessage(Message msg) {
    
                switch (msg.what) {
                case SET_PROGRESS:
                    backup_app.setMessage((String) msg.obj);
                    break;
                case FINISH_PROGRESS:
                    backup_app.dismiss();
                    AlertDialog.Builder finish = new AlertDialog.Builder(
                            MainActivity.this);
                    finish.setTitle(R.string.finish_title);
                    finish.setMessage(R.string.finish_message);
                    finish.setCancelable(false);
                    finish.setIcon(android.R.drawable.ic_menu_close_clear_cancel);
                    finish.setPositiveButton(R.string.finish_button,
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    dialog.dismiss();
                                }
                            });
                    AlertDialog finish_alert = finish.create();
                    finish_alert.show();
                    break;
                }
            }
        };
    
    Ich habe meinen Code, mit dem ich alle Apps sichern kann als Vorlage genommen. (Hier damit ihr einen Vergleich habt)

    Code:
        private ProgressDialog backup_all;
    
                            backup_all = ProgressDialog.show(MainActivity.this,
                        "Sicherung der Anwendungen", "", true, false);
                Thread backup_all = new Thread(new BackupAll(mApps));
                backup_all.start();
    
    Aufgerufen wird dort:

    Code:
            private static final String BACKUP_LOC = Environment
                .getExternalStorageDirectory() + "/InfoBackup/";
        private static final int SET_PROGRESS = 0x00;
        private static final int FINISH_PROGRESS = 0x01;
        private ProgressDialog backup_all;
    
        private List<App> mApps;
        private App info;
    
    private class BackupAll implements Runnable {
            private static final int BUFFER = 1024;
    
            private File mDir = new File(BACKUP_LOC);
            private byte[] mData;
    
            public BackupAll(List<App> data) {
                mApps = data;
                mData = new byte[BUFFER];
    
                /* create dir if needed */
                File d = new File(BACKUP_LOC);
                if (!d.exists()) {
                    d.mkdir();
    
                    // then create this directory
                    mDir.mkdir();
    
                } else {
                    if (!mDir.exists())
                        mDir.mkdir();
                }
            }
    
            public void run() {
                BufferedInputStream mBuffIn;
                BufferedOutputStream mBuffOut;
                Message msg;
                int len = mApps.size();
                int read = 0;
    
                for (int i = 0; i < len; i++) {
                    info = mApps.get(i);
                    String source_dir = info.getInstallDir();
                    String out_file = info.getTitle() + " " + info.getVersionName()
                            + ".apk";
                    try {
                        mBuffIn = new BufferedInputStream(new FileInputStream(
                                source_dir));
                        mBuffOut = new BufferedOutputStream(new FileOutputStream(
                                BACKUP_LOC + out_file));
    
                        while ((read = mBuffIn.read(mData, 0, BUFFER)) != -1)
                            mBuffOut.write(mData, 0, read);
    
                        mBuffOut.flush();
                        mBuffIn.close();
                        mBuffOut.close();
    
                        msg = new Message();
                        msg.what = SET_PROGRESS;
                        msg.obj = i + " von " + len + " Anwendungen gesichert";
                        BackupAllHandler.sendMessage(msg);
    
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
    
                BackupAllHandler.sendEmptyMessage(FINISH_PROGRESS);
            }
        }
    
     
  2. the_alien, 01.08.2011 #2
    the_alien

    the_alien Android-Lexikon

    Was genau ist deine Frage?
    Wie man nach einem Item Click auf das dazugehörige Objekt kommt? Dafür kriegt man ja den index übergeben.

    Oder war die Frage eine andere?
     
  3. AlexRock, 01.08.2011 #3
    AlexRock

    AlexRock Threadstarter Junior Mitglied

    Ich klicke auf ein Element der ListView (Ist eine App im /data/) und diese eine möchte ich dann an meinen "BackupApp()" übergeben...
    Ich weiss leider nicht, wie ich das daran übergeben kann und ob meine Methode "BackupApp" richtig geschrieben ist, damit sie nur dieses eine Objekt sichert
     
  4. swordi, 01.08.2011 #4
    swordi

    swordi Gewerbliches Mitglied

    ohne viel zu überlegen würd ich jetzt mal sowas machen

    mApps = new ArrayList<App>();
    mApps.add(the_one_app_to_backup);

    Thread backup_all = new Thread(new BackupAll(mApps));
    backup_all.start();

    somit übergibst du ihm halt eine arraylist mit nur einem element. wenns mit allen geht, wirds mit einem auch gehn.
     
  5. AlexRock, 01.08.2011 #5
    AlexRock

    AlexRock Threadstarter Junior Mitglied

    Hallo Swordi,
    Und was muss in das mApps.add() rein? Woher weiss der nun, welche ich ausgewählt habe? Noch mApps.getId oder sowas?
     
  6. AlexRock, 01.08.2011 #6
    AlexRock

    AlexRock Threadstarter Junior Mitglied

    Habs schon rausgefunden
    Code:
    backup_app = ProgressDialog.show(MainActivity.this,
                                "Sicherung", "", true, false);
                        mApps = new ArrayList<App>();
                        mApps.add(app);
    
                        Thread backup_all = new Thread(new BackupApp(mApps));
                        backup_all.start();
    
     
  7. swordi, 01.08.2011 #7
    swordi

    swordi Gewerbliches Mitglied

    der code ist ja von dir oder??
    da solltest du ja schon wissen was er tut :)

    das scheint mir aber nicht ganz selbst geschrieben.
     
  8. AlexRock, 01.08.2011 #8
    AlexRock

    AlexRock Threadstarter Junior Mitglied

    Hallo Swordi,
    ja code ist von mir und nem Freund, der momentan (wie sollte es auch anders sein in den Ferien) in Urlaub ist (er ist schon bewanderter in Java)...

    Aber nun klappt es ja

    Code:
    backup_app = ProgressDialog.show(MainActivity.this,                             "Sicherung", "", true, false);                     mApps = new ArrayList<App>();
    mApps.add(app);
    Thread backup_all = new Thread(new BackupApp(mApps));
    backup_all.start();
    
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] Android app selber entwickeln mit Bluetooth Android App Entwicklung Freitag um 12:01 Uhr
[ERLEDIGET] App über href starten Android App Entwicklung 28.09.2017
[OFFEN] Kostenpflichtige App für Beta-Test hochladen Android App Entwicklung 13.09.2017
[OFFEN] App startet nicht... Android App Entwicklung 10.09.2017
[OFFEN] Sind Notifications in einer Webview App möglich? Android App Entwicklung 10.09.2017
[OFFEN] Möchte eine App für Entrümpelungen entwickeln. Android App Entwicklung 08.09.2017
[ERLEDIGT] Alpha-Version meiner App nicht mit S8 kompatibel Android App Entwicklung 06.09.2017
[ERLEDIGT] Verbindung zu MS SQL DB von App aus möglich? Android App Entwicklung 05.09.2017
[OFFEN] App schließt nach Öffnen sofort Android App Entwicklung 04.09.2017
[ERLEDIGT] MIT APP Inventor paralleler Tastendruck Android App Entwicklung 23.08.2017

Users found this page by searching for:

  1. einzelne apps sichern

Du betrachtest das Thema "Einzelne App sichern" im Forum "Android App Entwicklung",