Je suis un nouvel Android, je crée une application dans laquelle on peut télécharger des fichiers dans le dossier de téléchargement (à l'aide du Gestionnaire de téléchargement). Je peux voir des images si je vais dans le dossier des téléchargements de l'émulateur. Donc, si je veux montrer un diaporama de fichiers téléchargés, comment puis-je obtenir l'accès à ce dossier? Deuxièmement, comment ajouter une barre de progression à ce code: -
import Java.util.Arrays;
import Android.app.Activity;
import Android.app.DownloadManager;
import Android.app.DownloadManager.Query;
import Android.app.DownloadManager.Request;
import Android.content.BroadcastReceiver;
import Android.content.Context;
import Android.content.Intent;
import Android.content.IntentFilter;
import Android.database.Cursor;
import Android.net.Uri;
import Android.os.Bundle;
import Android.view.View;
import Android.widget.ImageView;
public class Download_managerActivity extends Activity {
private long quueue_for_url;
private DownloadManager dm;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
long downloadId = intent.getLongExtra(
DownloadManager.EXTRA_DOWNLOAD_ID, 0);
Query query = new Query();
query.setFilterById(quueue_for_url);
Cursor c = dm.query(query);
if (c.moveToFirst()) {
int columnIndex = c
.getColumnIndex(DownloadManager.COLUMN_STATUS);
if (DownloadManager.STATUS_SUCCESSFUL == c
.getInt(columnIndex)) {
ImageView view = (ImageView) findViewById(R.id.imageView1);
String uri_String_abcd = c
.getString(c
.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
view.setImageURI(Uri.parse(uri_String_abcd));
}
}
}
}
};
registerReceiver(receiver, new IntentFilter(
DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}
public void onClick(View view) {
dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Request request_for_url = new Request(
Uri.parse("http://fc03.deviantart.net/fs14/i/2007/086/9/1/Steve_Jobs_portrait_by_tumb.jpg"));
Request request_for_url1 = new Request(
Uri.parse("http://2.bp.blogspot.com/_q7Rxg4wqDyc/S5ZRVLxVYuI/AAAAAAAAAvU/fQAUZ2XFcp8/s400/katrina-kaif.jpg"));
Request request_for_url2 = new Request(
Uri.parse("http://www.buzzreactor.com/sites/default/files/Bill-Gates1.jpg"));
quueue_for_url = dm.enqueue(request_for_url);
quueue_for_url = dm.enqueue(request_for_url1);
quueue_for_url = dm.enqueue(request_for_url2);
}
public void showDownload(View view) {
Intent i = new Intent();
//try more options to show downloading , retrieving and complete
i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS);
startActivity(i);
}
}
Je souhaite ajouter un bouton permettant de prendre les photos à partir du dossier de téléchargement, puis de les afficher comme un diaporama.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="cmpe235.lab1"
Android:versionCode="1"
Android:versionName="1.0">
<uses-sdk Android:minSdkVersion="9" />
<uses-permission Android:name="Android.permission.INTERNET"></uses-permission>
<application Android:icon="@drawable/icon" Android:label="@string/app_name">
<activity Android:name=".Download_managerActivity"
Android:label="@string/app_name">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
main.xml: -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical" Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<Button Android:text="Start Download" Android:id="@+id/button1"
Android:layout_width="wrap_content" Android:layout_height="wrap_content"
Android:layout_gravity="center_vertical|center_horizontal|center" Android:textColor="#0000A0"
Android:typeface="serif" Android:onClick="onClick"></Button>
<Button Android:text="View Downloads" Android:id="@+id/button2"
Android:layout_width="wrap_content" Android:layout_height="wrap_content"
Android:layout_gravity="center_vertical|center_horizontal|center" Android:textColor="#0000A0"
Android:typeface="serif" Android:onClick="showDownload"></Button>
<ImageView Android:layout_height="wrap_content" Android:id="@+id/imageView1"
Android:src="@drawable/icon" Android:layout_width="wrap_content"></ImageView>
</LinearLayout>
Pour votre première question, essayez
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
(disponible depuis API 8)
Pour accéder aux fichiers individuels de ce répertoire, utilisez soit File.list () ou File.listFiles () . Il semble que la notification de la progression du téléchargement ne soit possible que dans la notification, voir ici .
Vous devez définir cette autorisation dans votre fichier manifest.xml.
Android.permission.WRITE_EXTERNAL_STORAGE
Si vous utilisez Marshmallow, vous devez soit:
En effet, dans Marshmallow, Google a complètement réorganisé le fonctionnement des autorisations.
Si vous utilisez un shell, le chemin du fichier de téléchargement (pas de "s") est
/storage/emulated/0/Download