Ich weiß, dass wir integrierte Download-Manager in Android 2.3 und höher verwenden können, aber meine App ist für Android 2.2 und höher geeignet. Meine Frage ist, wie man eigene Download-Manager in Android erstellen 2.2? Bitte geben Sie mir eine Beispielantwort.wie man eigenen Download-Manager in Android 2.2
Antwort
bitte geben Sie mir eine Beispielantwort.
Schritt 1 Suchen Sie nach Beispiel dafür, wie Dateien im Android zum Download
Schritt 2 Suchen Sie nach Beispiel dafür, wie Operationen in AsyncTask auszuführen.
Schritt 3 Suchen Sie zum Beispiel nach, wie der Download-Fortschritt beim Herunterladen angezeigt wird.
Step4 Suchen Sie nach Beispiel dafür, wie kundenspezifische Übertragung zu senden, wenn Task-
abgeschlossen istSchritt 5 Suchen Sie nach Beispiel dafür, wie AsysncTask Betrieb auch auf Gerätedrehung auf Persist
Step6 Suchen Sie nach Beispiel dafür, wie Download-Fortschritt anzeigen in Benachrichtigung.
Unten ist Beispielcode.
1. Verwenden AsyncTask und zeigen die Download Fortschritt in einem Dialog
// declare the dialog as a member field of your activity
ProgressDialog mProgressDialog;
// instantiate it within the onCreate method
mProgressDialog = new ProgressDialog(YourActivity.this);
mProgressDialog.setMessage("A message");
mProgressDialog.setIndeterminate(false);
mProgressDialog.setMax(100);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// execute this when the downloader must be fired
DownloadFile downloadFile = new DownloadFile();
downloadFile.execute("the url to the file you want to download");
The AsyncTask will look like this:
// usually, subclasses of AsyncTask are declared inside the activity class.
// that way, you can easily modify the UI thread from here
private class DownloadFile extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... sUrl) {
try {
URL url = new URL(sUrl[0]);
URLConnection connection = url.openConnection();
connection.connect();
// this will be useful so that you can show a typical 0-100% progress bar
int fileLength = connection.getContentLength();
// download the file
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream("/sdcard/file_name.extension");
byte data[] = new byte[1024];
long total = 0;
int count;
while ((count = input.read(data)) != -1) {
total += count;
// publishing the progress....
publishProgress((int) (total * 100/fileLength));
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (Exception e) {
}
return null;
}
Die oben beschriebene Methode (doInBackground) läuft immer auf einem Hintergrund-Thread. Sie sollten dort keine UI-Aufgaben ausführen. Auf der anderen Seite, die onProgressUpdate und OnPreExecute auf dem UI-Thread ausgeführt werden, so dass es können Sie den Fortschrittsbalken ändern:
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog.show();
}
@Override
protected void onProgressUpdate(Integer... progress) {
super.onProgressUpdate(progress);
mProgressDialog.setProgress(progress[0]);
}
}
2. Herunterladen von Service-
Die große Frage ist: Wie Ich aktualisiere meine Aktivität von einem Dienst ?. Im nächsten Beispiel verwenden wir zwei Klassen, die Ihnen vielleicht nicht bekannt sind: ResultReceiver und IntentService. ResultReceiver ist der, mit dem wir unseren Thread von einem Dienst aktualisieren können; IntentService ist eine Unterklasse von Service, die einen Thread für die Hintergrundarbeit von dort erzeugt (Sie sollten wissen, dass ein Service tatsächlich im selben Thread Ihrer App ausgeführt wird. Wenn Sie den Service erweitern, müssen Sie manuell neue Threads generieren, um CPU-Blockierungsvorgänge auszuführen) .
Download-Service kann wie folgt aussehen:
public class DownloadService extends IntentService {
public static final int UPDATE_PROGRESS = 8344;
public DownloadService() {
super("DownloadService");
}
@Override
protected void onHandleIntent(Intent intent) {
String urlToDownload = intent.getStringExtra("url");
ResultReceiver receiver = (ResultReceiver) intent.getParcelableExtra("receiver");
try {
URL url = new URL(urlToDownload);
URLConnection connection = url.openConnection();
connection.connect();
// this will be useful so that you can show a typical 0-100% progress bar
int fileLength = connection.getContentLength();
// download the file
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream("/sdcard/BarcodeScanner-debug.apk");
byte data[] = new byte[1024];
long total = 0;
int count;
while ((count = input.read(data)) != -1) {
total += count;
// publishing the progress....
Bundle resultData = new Bundle();
resultData.putInt("progress" ,(int) (total * 100/fileLength));
receiver.send(UPDATE_PROGRESS, resultData);
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (IOException e) {
e.printStackTrace();
}
Bundle resultData = new Bundle();
resultData.putInt("progress" ,100);
receiver.send(UPDATE_PROGRESS, resultData);
}
}
den Dienst zu Ihrem Manifest hinzufügen:
<service android:name=".DownloadService"/>
und die Aktivität wird wie folgt aussehen:
// den Fortschrittsdialog initialisieren wie im ersten Beispiel
// So feuern Sie den Downloader
mProgressDialog.show();
Intent intent = new Intent(this, DownloadService.class);
intent.putExtra("url", "url of the file to download");
intent.putExtra("receiver", new DownloadReceiver(new Handler()));
startService(intent);
hier waren, ist ResultReceiver kommt zu spielen:
Beantwortungsprivate class DownloadReceiver extends ResultReceiver{
public DownloadReceiver(Handler handler) {
super(handler);
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
super.onReceiveResult(resultCode, resultData);
if (resultCode == DownloadService.UPDATE_PROGRESS) {
int progress = resultData.getInt("progress");
mProgressDialog.setProgress(progress);
if (progress == 100) {
mProgressDialog.dismiss();
}
}
}
}
- 1. Android: DownloadManager - Benachrichtigung Sticking
- 2. Benachrichtigung verschwindet - Android DownloadManager
- 3. wie man DownloadManager in ArrayAdapter verwendet
- 4. Android - DownloadManager/BroadcastReceiver mehrmals aufgerufen
- 5. android2.3 DownloadManager
- 6. Play 2.2 - specs2 - Wie testet man Futures in Play 2.2?
- 7. Wie pausieren und fortsetzen DownloadManager
- 8. how android downloadManager tun http grundlegende Authentifizierung
- 9. Android - Wie man eigenen Text in Button/TextView mit Datenbindung
- 10. .db-Datei mit Android DownloadManager herunterladen
- 11. Android DownloadManager, Backup-Dateien und abgebrochene Downloads
- 12. Android DownloadManager illegalstateexception kann Verzeichnis nicht erstellen
- 13. android: downloadmanager wo sind die dateien gespeichert
- 14. Ist es möglich, Cookies in einem Android DownloadManager zu senden
- 15. Android DownloadManager "Datei kann nicht geöffnet werden"
- 16. Espressotestaufzeichnungsfunktion in Android Studio 2.2
- 17. Wie man Benutzer in mongodb 2.2 hinzufügt?
- 18. Android 2.2 Wie kann man wissen, wenn jemand schreibt?
- 19. Wie installiert man das Android Studio 2.2 CMake Paket/Tool?
- 20. Android sdk 2.2
- 21. AnimationDrawable funktionieren nicht in Android 2.2
- 22. Android - Implementieren Navigationsschublade in Android 2.2 +
- 23. Android 2.2 VideoView Problem
- 24. Multicast auf Android 2.2
- 25. Android Studio 2.2 EditText Border
- 26. Android 2.2 und 2.3
- 27. Bild heruntergeladen von DownloadManager in Warteschlange auf Android
- 28. Android 2.2 Datensicherung: Wie Backup DefaultSharedPreferences?
- 29. Downloadmanager mit benutzerdefinierten Uri
- 30. android Studio 2.2 wie ohne android-apt-Plugin
Dank. Ich werde es versuchen. –
Wenn es Ihr Problem löst, vergessen Sie nicht, Antwort zu akzeptieren, da es anderen Benutzern hilft, –