2011-10-26 5 views
49

私は新しいAndroidです。ダウンロードマネージャーを使用してダウンロードフォルダにファイルをダウンロードできるアプリを作っています。エミュレータのダウンロードフォルダに行くと写真が見えます。だから私はダウンロードしたファイルのスライドショーを表示したいのですが、どうすればそのフォルダへのアクセス権を得ることができますか?第二に、このコードにプログレスバーを追加する方法: -Androidのダウンロードフォルダへのアクセス方法は?

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); 
     } 
    } 

私はダウンロードフォルダから写真を撮った後、スライドショーのように表示する機能を実行するボタンを追加します。

<?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> 

答えて

147

(API 8以降で利用可能)

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 

を試してみてください

このディレクトリの使用中の個々のファイルにアクセスするには、いずれかFile.list()またはFile.listFiles()。 通知のダウンロードの進捗状況は、hereを参照してください。

+0

ちょっとおかげで、どのように私はあなたが私たちがEnvironment.getExternalStoragePublicDirectoryによってexterna_downloadsへのアクセス(Environment.DIRECTORY_DOWNLOADS)を取得するときにことを、 – Dhruv

+3

そしてもう一つ、私を助けてくださいすることができ、このコードにプログレスバーを追加することができます。そのフォルダ内の各ファイルにさらにアクセスする方法は? – Dhruv

+0

@Drake:答えを編集しました – slkorolev

22

あなたはマシュマロを使用している場合、あなたはどちらかに持っている

android.permission.WRITE_EXTERNAL_STORAGE 
+1

@Bo Persson:ありがとう:) – Dhruv

+2

APIレベル23(Marshmallow)の時点で、実行時に権限を要求する必要があります。詳細については、[システムパーミッションの操作](http://developer.android.com/training/permissions/index.html)を参照してください。 –

6

あなたのManifest.xmlファイルにこの権限を設定する必要があります。実行時に

  1. Request permissions(ユーザーができるようになりますまたは要求を拒否する):
  2. ユーザーは設定 - >アプリ - > {あなたのアプリケーション} - >許可grant storage accessに移動する必要があります。

これは、Googleがマーシュマローで許可の仕組みを完全に改訂したためです。 slkorolev- @

関連する問題