2015-04-07 24 views
13

Mam ten fragment koduAndroid poziom API <19 i „spróbować można użyć automatycznego zarządzania zasobami” ostrzeżenie

private void copyFile(File src, File dst) throws IOException { 

    FileChannel inChannel = new FileInputStream(src).getChannel(); 
    FileChannel outChannel = new FileOutputStream(dst).getChannel(); 

    try { 

     inChannel.transferTo(0, inChannel.size(), outChannel); 

    }finally { 

     if(inChannel != null) { 

      inChannel.close(); 

     } 

     outChannel.close(); 

    } 

} 

który generuje irytujące ostrzeżenie „try może korzystać z automatycznego zarządzania zasobami”. Wydaje mi się, że nie mogę używać Java 7 try-with-resources, ponieważ moja aplikacja jest na poziomie 14 api (wystąpił błąd, jeśli jej używam). Czy istnieje sposób na powstrzymanie tego denerwującego ostrzeżenia?

+1

Użyj SuppressLint na nim –

+0

i jakiego identyfikatora należy użyć? Nie chcę używać "wszystkiego" .. –

Odpowiedz

19

@SuppressWarnings ("TryFinallyCanBeTryWithResources") wystarczyły :)

+0

to po prostu usuwa ostrzeżenie, ale nie będzie działać na prawdziwych urządzeniach <19 – huluyige

+0

Więc jakiejkolwiek sugestii? @huluyige – KaKa

+1

@KaKa nie używaj "try-with-resources" języka Java 7 :) – huluyige

0

@SuppressLint("NewApi") również będzie działać =)

I na przykład:

@SuppressLint("NewApi") 
    public static File saveImage(Bitmap bitmap) { 
     File file = null; 
     if (isExternalStorageWritable()) { 
      file = new File(getFolderStorageDirectory(), getFileNameImage()); 
      try (FileOutputStream out = new FileOutputStream(file)) { 
       bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
      } catch (Exception e) { 
       e.getMessage(); 
      } 
     } 
     return file; 
    } 

nadzieję, że to pomaga!