2012-06-08 10 views
10

एंड्रॉइड डाउनलोडर का उपयोग कर फाइलें कैसे डाउनलोड कर सकते हैं? (डाउनलोडर जो WebBrowser भी इसका उपयोग कर रहा है)।मैं डिफ़ॉल्ट एंड्रॉइड डाउनलोडर के माध्यम से एक फ़ाइल कैसे डाउनलोड करूं?

Intent i = new Intent(Intent.ACTION_VIEW , Uri.parse("MyUrl")); 
startActivity(i); 

कोई बेहतर तरीका:

मैं कुछ इस तरह की कोशिश की?

संपादित

मैं एंड्रॉयड 2.2 का उपयोग कर रहा

उत्तर

3

आपको Android 2.2 और उसके बाद ऐसा करने के लिए HttpUrlConnection का उपयोग करने की आवश्यकता है। इंटरनेट पर एक बहुत विस्तृत tutorial है जो आपको दिखाता है कि यह कैसे करें (प्रगति संवाद बॉक्स के साथ भी)।

याद रखें कि आप एक AsyncTask या एक Thread का उपयोग सुनिश्चित करने के लिए है कि आप वास्तविक डाउनलोड के दौरान यूआई धागा ब्लॉक नहीं करती चाहिए!

+0

धन्यवाद, लेकिन "मैं डिफ़ॉल्ट एंड्रॉइड डाउनलोडर का उपयोग कर फाइल कैसे डाउनलोड कर सकता हूं?"। मुझे लगता है कि मुझे अपने स्वयं के समाधान का उपयोग करना चाहिए। – Kermia

+1

यदि आप ऐसे डिवाइस पर काम कर रहे हैं जो एंड्रॉइड 2.2 या उससे नीचे चलाता है, तो आप नहीं कर सकते हैं। डिफ़ॉल्ट डाउनलोडर 2.3 में पेश किया गया था और इस प्रकार पुराने संस्करण इसे पहचान नहीं पाएंगे। –

17

ये रहा।

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 DownloadManagerActivity extends Activity { 
    private long enqueue; 
    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(enqueue); 
        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 uriString = c 
            .getString(c 
              .getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)); 
          view.setImageURI(Uri.parse(uriString)); 
         } 
        } 
       } 
      } 
     }; 

     registerReceiver(receiver, new IntentFilter(
       DownloadManager.ACTION_DOWNLOAD_COMPLETE)); 
    } 

    public void onClick(View view) { 
     dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
     Request request = new Request(
       Uri.parse("url for file to download")); 
     enqueue = dm.enqueue(request); 

    } 

    public void showDownload(View view) { 
     Intent i = new Intent(); 
     i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS); 
     startActivity(i); 
    } 
} 

मेनिफेस्ट में android.permission.internet जोड़ने के लिए मत भूलना।

+0

महान उत्तर। असल में मुझे नहीं पता था कि ऐसी सेवा मौजूद है। क्या यह एक चिपचिपा प्रसारण है? –

+0

क्षमा करें इसके बारे में निश्चित नहीं है :) यदि आप अपनी समस्या का समाधान करते हैं तो आप इस जवाब को स्वीकार कर सकते हैं, क्योंकि यह दूसरों की मदद करेगा :) –

+0

मैं जवाब स्वीकार करूंगा। लेकिन - मैं वह प्रश्न नहीं हूं जो प्रश्न पोस्ट करता है ... लेकिन मैं वह हूं जो उत्तर –

3

यदि आप इसे किसी यूआरएल से उपयोगकर्ता के एसडी कार्ड पर डाउनलोड करना चाहते हैं, तो आप इसे फोन के डिफ़ॉल्ट इंटरनेट ब्राउज़र में खोल सकते हैं।

String url = "https://appharbor.com/assets/images/stackoverflow-logo.png"; 
Intent i = new Intent(Intent.ACTION_VIEW); 
i.setData(Uri.parse(url)); 
startActivity(i); 

(Code from this question)

एंड्रॉयड ब्राउज़र तो शुरू कर देंगे और फ़ाइल (इस मामले में एक छवि) डाउनलोड किया जाएगा।

+0

मेरी सोनी xepria फोन में। छवि ब्राउज़र में स्वयं दिखाया गया है। जो मैं चाहता हूं वह डाउनलोड शुरू होने पर फायरिंग के इरादे के बाद है, इसे मेरे ऐप पर ले जाना चाहिए। –

+0

यदि आप कोई छवि डाउनलोड करने का प्रयास कर रहे हैं तो ब्राउज़र छवि को खोल देगा और इसे देखेगा। यह विधि बाइनरी फ़ाइलों जैसे .zip के लिए है। मैं आपको विपुल शाह के समाधान का उपयोग करने की सलाह देता हूं। –

+0

अगर मैं एपीके फ़ाइल डाउनलोड कर रहा हूं तो यह काम करेगा? –

0

हां, आप मुख्य धागे में नेटवर्क ऑपरेशन नहीं कर सकते हैं। फ़ाइल डाउनलोड करने के लिए आप this भंडार देख सकते हैं।

+1

हाय अमित, शायद आप एक नज़र देख सकते हैं [यहां] (http://stackoverflow.com/help/promotion) – bummi

संबंधित मुद्दे