2016-07-08 5 views
1

В моем приложении, я называю Service который выполняет data-Uploading к серверу и после успешной загрузки, я хочу удалить этот загруженный файл, как если бы я не удалить, что, он будет загружать в тот же файл столько раз, сколько запускает сервис.file.delete() не работает

Чтобы удалить загруженный файл, я использую этот метод:

String path = fileToBeUploaded.getPath(); 
File file = new File(path); 
boolean delStatus= file.delete(); 

, но он не работает. Пожалуйста, дайте мне знать, какую ошибку я здесь делаю.

Вот мой полный класс обслуживания:

public class UploadSurveyService extends Service implements SilentUploadSurveyListener{ 

    private static FileCache fileCache; 
    private static boolean IS_REFRESHING_DATA = false; 
    private static boolean NEXT_LAUNCH_SET = false; 
    private static boolean isFirstTime = true; 

    private UploadSurveyAsyncTask updateLocationAsyncTask; 
    private File fileToBeUploaded; 

    public UploadSurveyService() { 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
    // TODO: Return the communication channel to the service. 
    return null; 
    } 

    @Override 
    public void onCreate() { 
    super.onCreate(); 
    if(fileCache == null) 
     fileCache = new FileCache(this); 

    System.out.println("upload survey service created"); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
    System.out.println("upload service on start command"); 
    if(isFirstTime && !NEXT_LAUNCH_SET){ 
     isFirstTime=false; 
     scheduleNextLaunch(); 
    } 
    else if(!IS_REFRESHING_DATA && intent.hasExtra("FROM_ALARM")){ 
     if (Methods.checkInternetConnection(getApplicationContext(), false)) { 
     IS_REFRESHING_DATA = true; 

     System.out.println("service is checking the condition"); 

     fileToBeUploaded= fileCache.getFileForUploading(); 

     if(fileToBeUploaded==null || !fileToBeUploaded.exists()){ 
      onUploadSurvey(false, null); 
     } else { 

      IS_REFRESHING_DATA=true; 
      updateLocationAsyncTask = new UploadSurveyAsyncTask(getApplicationContext(),fileToBeUploaded, this); 
      updateLocationAsyncTask.execute(); 
      Log.d("SK SERVICE", "executing upload survey task"); 
     } 
     } 
    } else { 
     Log.d("SF SERVICE", "no internet"); 
     onUploadSurvey(false, null); 
    } 
    return super.onStartCommand(intent, flags, startId); 
    } 

    private void scheduleNextLaunch(){ 

    Calendar futureCalendar = Calendar.getInstance(); 
    Calendar currentCalendar = Calendar.getInstance(); 
    futureCalendar.set(Calendar.MINUTE,currentCalendar.get(Calendar.MINUTE) + 5); 
    futureCalendar.set(Calendar.SECOND, 0); 
    futureCalendar.set(Calendar.MILLISECOND, 0); 
    //futureCalendar.set(Calendar.HOUR_OF_DAY,currentCalendar.get(Calendar.HOUR_OF_DAY)+1); 

    AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE); 
    Intent pendingIntent= new Intent(this, UploadSurveyService.class); 
    pendingIntent.putExtra("FROM_ALARM", true); 
    alarm.set(alarm.RTC_WAKEUP,futureCalendar.getTimeInMillis(),PendingIntent.getService(this, 0, pendingIntent, 0)); 
    NEXT_LAUNCH_SET = true; 
    Log.d("SF Silent Upload", "repeat set ok"); 
    } 

    @Override 
    public void onUploadSurvey(boolean status, String message) { 

    updateLocationAsyncTask = null; 

    IS_REFRESHING_DATA = false; 

    Log.d("SF SERVICE", "after finish async task"); 
    scheduleNextLaunch(); 

    if(status) { 
     String path = fileToBeUploaded.getPath(); 
     File file = new File(path); 
     boolean delStatus= file.delete(); 
     Toast.makeText(UploadSurveyService.this, "file deleted" + delStatus, Toast.LENGTH_SHORT).show(); 
    } 
    } 
} 

Я также объявили разрешение в манифесте:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+0

У вас есть разрешение .... ?? –

+0

@ Er.Arjunsaini, какое разрешение? – Devraj

+0

использует-разрешение андроид: name = "android.permission.WRITE_EXTERNAL_STORAGE" –

ответ

1

Define в WRITE_EXTERNAL_STORAGE в манифесте:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+0

Lolz, bro, я использую это разрешение, поэтому мой файл загружается на сервер, я думаю, что это не будет возможно без чтения файла, и чтение любого файла не будет возможным без этого разрешения. – Devraj

+0

Ну, может быть, файл прошел неправильно, проверьте наличие файла 'file.exists()' –

0

Почему бы вам просто не удалить fileToBeUploaded? Я предполагаю, что это файл, который вы хотите удалить, не так ли? Нет необходимости создавать новый файл .

fileToBeUploaded.delete(); 
+0

Спасибо Тодор, но я тоже пробовал, что не работал .. :( – Devraj