2013-05-31 5 views
7

मैं इंटरनेट से सेवा के साथ एक फाइल डाउनलोड करना चाहता हूं। मुझे स्रोत कोड मिला और कोड अच्छी तरह से काम किया। लेकिन मुझे एक समस्या है जब मैं ऐप से वापस डाउनलोड कर रहा हूं या जब मैं रैम साफ़ करता हूं, तो यह भी रोक रहा है। इसलिए मैं Google Play जैसे कोड डाउनलोड करना चाहता हूं, जो स्पष्ट RAM या ऐप इतिहास को कभी नहीं रोकता है। यह मेरा स्रोत कोड है:एंड्रॉइड में सेवा के साथ फ़ाइल कैसे डाउनलोड करें?

public class Temp extends IntentService { 
public static final int UPDATE_PROGRESS = 8344; 
private int lastupdate=0; 
private NotificationManager nm; 
private Builder mBuilder; 
public Temp() { 

    super("Temp"); 


} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.d("SERVICE-ONCOMMAND", "onStartCommand"); 
    return START_STICKY; 
} 

@Override 
protected void onHandleIntent(Intent intent) { 
    Log.e("ok","ok"); 
    nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    mBuilder = new NotificationCompat.Builder(this); 
    mBuilder.setContentTitle(
      "Picture Download dnsadg sadgasjdgashgd asgd asjdg asjgd sajgd s") 
      .setContentText("Download in progress") 
      .setSmallIcon(R.drawable.icon_app).setContentInfo("0%"); 

    mBuilder.setOngoing(true); 
    File root = new File(Environment.getExternalStorageDirectory() 
      + "/aaaa"); 
    String urlToDownload = "http://dl2.mid.az/endir.php?file=uploads/Exclusive/miri_yusif_-_yoxam_men_mp3.mid.az.mp3"; 
    // 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(new File(root.getPath(), 
       "ok.mp3")); 

     byte data[] = new byte[1024]; 
     long total = 0; 
     int count; 
     while ((count = input.read(data)) != -1) { 
      total += count; 

      progressChange((int)(total * 100)/fileLength); 
      // 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); 
} 

@Override 
public void onDestroy() { 
    Log.e("DESTROY", "DESTROY"); 
    super.onDestroy(); 
} 
void progressChange(int progress){ 


    if (lastupdate != progress) { 
     lastupdate = progress; 
     // not.contentView.setProgressBar(R.id.status_progress, 
     // 100,Integer.valueOf(progress[0]), false); 
     // inform the progress bar of updates in progress 
     // nm.notify(42, not); 
     if (progress < 100) { 
      mBuilder.setProgress(100, Integer.valueOf(progress), 
        false).setContentInfo(progress+"%"); 
      nm.notify(12, mBuilder.build()); 
       Intent i = new Intent("com.russian.apps.TabActivity").putExtra("some_msg",progress+"%"); 
       this.sendBroadcast(i); 
     } else { 
      mBuilder.setContentText("Download complete") 
      // Removes the progress bar 
        .setProgress(0, 0, false).setOngoing(false).setContentInfo("");; 

      nm.notify(12, mBuilder.build()); 

     } 

    } 

} 
} 

उत्तर

4

आप startForeground को कॉल करने का प्रयास कर सकते हैं। अधिक जानकारी के लिए this post देखें।

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