Scarica l'image da una nuova applicazione Google+ (più)

Google ha recentemente aggiunto l'applicazione Foto per Google+ (più) e si presenta quando lanci una Intenzione per scegliere un'image. Tuttavia, se seleziono un'image da Google+ Foto e cerco di utilizzarla nella mia applicazione, nessuna delle mie logiche correnti è in grado di restituire un URI o un URL utilizzabili per get effettivamente un'image che posso scaricare e manipolare. Attualmente sto utilizzando i methods "comuni" per cercare di manipolare l'URI che si trova qui in Overflow Stack e altrove. Posso fornire il codice se necessario, ma a questo punto credo che sia un po 'irrilevante perché funziona bene per tutto il resto tranne questa nuova applicazione. Qualche idea su come get un'image usabile?

L'URI ha un aspetto simile al seguente:

  • Come effettuare un button statico sotto uno ScrollView?
  • Come eseguire l'azione dopo il button positivo di DialogFragment cliccato
  • RecyclerView non carica i dati nel primo lancio utilizzando FirebaseRecyclerAdapter
  • Ricerca menu ristorante Api
  • Android gestisce frammenti dall'attività elegante
  • Android - È ansible dichiarare una maschera alfa direttamente all'interno della definizione XML di layer-list?
  • content://com.google.android.apps.photos.content/0/https%3A%2F%2Flh5.googleusercontent.com%<a bunch of letters and numbers here> 

    Le informazioni di MediaColumns.DATA restituiscono sempre null e MediaColumns.DISPLAY_NAME restituisce sempre MediaColumns.DISPLAY_NAME non import quello che seleziono dall'app Google Photos. Se cerco di incollare tutto da https alla fine nel mio browser, non viene niente. Non so come get informazioni utili da questo.

  • Pairing Bluetooth senza conferma dell'utente
  • sendTextMessage Nel telefono android
  • Come mostrare le icone nel menu contestuale in android?
  • Android: come usare il selettore?
  • In caso di zoom per Google Maps su android
  • Android SurfaceHolder.unlockCanvasAndPost () non causa la ridisezione
  • 3 Solutions collect form web for “Scarica l'image da una nuova applicazione Google+ (più)”

    Quando si riceve l'intento dei dati, è necessario utilizzare il contenutoResolver per get le foto. Ecco cosa dovresti fare:

     String url = intent.getData().toString(); Bitmap bitmap = null; InputStream is = null; if (url.startsWith("content://com.google.android.apps.photos.content")){ is = getContentResolver().openInputStream(Uri.parse(url)); bitmap = BitmapFactory.decodeStream(is); } 

    Ho affrontato problemi che selezionano le immagini dalla nuova app Google Photos. Sono stato in grado di risolvere il codice sotto.

    Funziona per me, fondamentalmente quello che ho fatto è che sto controllando se esiste un'autorità o less nell'URI del contenuto. Se è lì sto scrivendo al file temporaneo e il path di return di quella image temporanea. È ansible ignorare la parte di compressione durante la scrittura in un'image temporanea

     public static String getImageUrlWithAuthority(Context context, Uri uri) { InputStream is = null; if (uri.getAuthority() != null) { try { is = context.getContentResolver().openInputStream(uri); Bitmap bmp = BitmapFactory.decodeStream(is); return writeToTempImageAndGetPathUri(context, bmp).toString(); } catch (FileNotFoundException e) { e.printStackTrace(); }finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } public static Uri writeToTempImageAndGetPathUri(Context inContext, Bitmap inImage) { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null); return Uri.parse(path); } 

    PS: ho risposto a una domanda simile qui

    È necessario utilizzare la proiezione per get ImageColumns.DATA (o MediaColumns.DATA ):

     private String getRealPathFromURI(Uri contentURI) { // Projection makes ContentResolver to get needed columns only String[] medData = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(contentURI, medData, null, null, null); // this is how you can simply get Bitmap Bitmap bmp = MediaStore.Images.Media.getBitmap(getContentResolver(), contentURI); // After using projection cursor will have needed DATA column cursor.moveToFirst(); final int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); return cursor.getString(idx); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.