2013-04-30 12 views

risposta

1

Ecco un metodo che ottiene le stringhe e crea un file di quella foto ed elimina il file al termine del processo. usalo in questo modo: loadContactPhotoThumbnail ("content: //com.android.contacts/contacts/550/photo");. Ho preso la maggior parte del codice here

 private String loadContactPhotoThumbnail(String photoData) { 
    // Creates an asset file descriptor for the thumbnail file. 
    AssetFileDescriptor afd = null; 
    FileOutputStream outputStream = null; 
    InputStream inputStream = null; 
    // try-catch block for file not found 
    try { 
     // Creates a holder for the URI. 
     Uri thumbUri; 
     // If Android 3.0 or later 
     if (Build.VERSION.SDK_INT 
       >= 
      Build.VERSION_CODES.HONEYCOMB) { 
      // Sets the URI from the incoming PHOTO_THUMBNAIL_URI 
      thumbUri = Uri.parse(photoData); 
     } else { 
     // Prior to Android 3.0, constructs a photo Uri using _ID 
      /* 
      * Creates a contact URI from the Contacts content URI 
      * incoming photoData (_ID) 
      */ 
      final Uri contactUri = Uri.withAppendedPath(
        Contacts.CONTENT_URI, photoData); 
      /* 
      * Creates a photo URI by appending the content URI of 
      * Contacts.Photo. 
      */ 
      thumbUri = 
        Uri.withAppendedPath(
          contactUri, Photo.CONTENT_DIRECTORY); 
     } 

    /* 
    * Retrieves an AssetFileDescriptor object for the thumbnail 
    * URI 
    * using ContentResolver.openAssetFileDescriptor 
    */ 
    afd = activity.getContentResolver(). 
      openAssetFileDescriptor(thumbUri, "r"); 

    FileDescriptor fdd = afd.getFileDescriptor(); 
    inputStream = new FileInputStream(fdd); 
    File file = File.createTempFile("PhoneContactProvider", "tmp"); 
    file.deleteOnExit(); 
    outputStream = new FileOutputStream(file); 
    byte[] buffer = new byte[1024]; 
    int len; 
    while ((len = inputStream.read(buffer)) != -1) { 
     outputStream.write(buffer, 0, len); 
    } 
    inputStream.close(); 
    outputStream.close(); 
    return "file://" + file.getAbsolutePath(); 
    } catch (Exception e) { 
     App.logger().e(this.getClass().getSimpleName(), e.getMessage()); 
    } 
    // In all cases, close the asset file descriptor 
    finally { 
     if (afd != null) { 
      try { 
       afd.close(); 
      } catch (IOException e) {} 
     } 
     if (inputStream != null) { 
      try { 
       inputStream.close(); 
      } catch (IOException e) {} 
     } 
     if (outputStream != null) { 
      try { 
       outputStream.close(); 
      } catch (IOException e) {} 
     } 
    } 
    return null; 
} 

AVVISO: QUESTO abituato lavoro sull'emulatore CON versione Android 4.1.2 e 4.0.3

Problemi correlati