2015-04-07 2 views
13

ho questo pezzo di codicelivello di Android API <19 e "provare può utilizzare la gestione automatica delle risorse" avvertimento

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

    } 

} 

che genera il fastidioso avvertimento "prova può utilizzare la gestione automatica delle risorse". Il prolem è che non posso usare Java 7 try-with-resources perché la mia app raggiunge api il livello 14 (ho un errore se lo uso). C'è un modo per sopprimere questo fastidioso avvertimento?

+1

Utilizzare un SuppressLint su di esso –

+0

e quale ID dovrei usare? Non voglio usare "tutti" .. –

risposta

19

@SuppressWarnings ("TryFinallyCanBeTryWithResources") ha fatto il trucco :)

+0

questo rimuove solo l'avviso, ma non funzionerà su dispositivi reali <19 – huluyige

+0

Quindi qualsiasi suggerimento? @huluyige – KaKa

+1

@KaKa non utilizzare "try-with-resources" di java 7 :) – huluyige

0

@SuppressLint("NewApi") anche funziona =)

E per esempio:

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

Speranza che aiuta!