2013-05-31 12 views
7

Moja aplikacja wykonuje zdjęcia i chcę udostępniać je na Instagramie.Jak wysłać zdjęcie na Instagram przy użyciu mojej aplikacji na Androida?

Moja aplikacja zapisać obraz w katalogu

File storagePath = new File(Environment.getExternalStorageDirectory() + "/DCIM/Camera/tubagram"); 

Teraz próbuję uzyskać ostatni obraz ja stwierdzałem podzielić na Instagram używając tego kodu

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); 
shareIntent.setType("image/*"); 

final ContentResolver cr = getContentResolver(); 
final String[] p1 = new String[] {MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATE_TAKEN}; 
Cursor c1 = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, p1, null, null, p1[1] + " DESC"); 

if (c1.moveToFirst()) { 

    Log.i("Teste", "last picture (" + c1.getString(0) + ") taken on: " + new Date(c1.getLong(1))); 
} 

shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+Environment.getExternalStorageDirectory() + "/DCIM/Camera/tubagram/" + c1.getString(0))); 
shareIntent.setPackage("com.instagram.android"); 

c1.close(); 

startActivity(shareIntent); 

otrzymam Tosty z ten komunikat o błędzie "Nie można pobrać pliku". Toast jest wysyłany przez Instagram.

Próbowałem użyć tego przykładu linku - share a photo in instagram - ale nie działało.

Proszę mi pomóc!

Odpowiedz

17

Rozwiązałem mój problem.

Dodaję tę linię po obrazie camera.take.

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory()))); 

Ta linia wykonuje "odświeżanie" i po rozpoznaniu przez telefon wiadomości z wiadomości zapisanych w telefonie.

I zrobiłem kilka zmian na moim sposobie

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); 
shareIntent.setType("image/*");     

final ContentResolver cr = getContentResolver(); 
final String[] p1 = new String[] { 
    MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.TITLE, MediaStore.Images.ImageColumns.DATE_TAKEN 
}; 
Cursor c1 = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, p1, null, null, p1[1] + " DESC"); 

if (c1.moveToFirst()) { 
    Log.i("Teste", "last picture (" + c1.getString(1) + ") taken on: " + new Date(c1.getLong(2))); 
} 

Log.i("Caminho download imagem", "file://"+Environment.getExternalStorageDirectory()+ "/Tubagram/" + c1.getString(1) + ".png"); 

shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+Environment.getExternalStorageDirectory()+ "/Tubagram/" + c1.getString(1)+".png")); 
shareIntent.setPackage("com.instagram.android"); 

c1.close(); 

startActivity(shareIntent); 

iz tego inny sposób zweryfikować, czy Instagram jest zainstalowana na telefonie

private boolean verificaInstagram(){ 
    boolean installed = false; 

    try { 
     ApplicationInfo info = getPackageManager().getApplicationInfo("com.instagram.android", 0); 
     installed = true; 
    } catch (NameNotFoundException e) { 
     installed = false; 
    } 
     return installed; 
    } 
+0

Proszę, staraj się zawsze używać angielskich metod i zmiennych, lepiej jest każdemu zrozumieć, co próbujesz zrobić. – jpros

+0

Czy jesteś również w stanie wysyłać nazwę aplikacji wraz z obrazem, aby inni mogli rozpoznać, że ta treść jest wysyłana za pośrednictwem innej aplikacji Nie Instagram bezpośrednio –

1

umieścić ten kod w przycisk click słuchacza to przekieruje Cię do aplikacji i upewni się, że Twoje urządzenie zainstalowało aplikację Instagram.

String type = "image/*"; 
imageview.buildDrawingCache(); 
Bitmap bmap = imageview.getDrawingCache(); 
Uri bmpUri = getLocalBitmapUri(bmap); 
Intent share = new Intent(Intent.ACTION_SEND); 
if (Utils.isPackageExisted(ActivityFullScreenJoke.this,"com.instagram.android")) { 
share.setPackage("com.instagram.android"); 
} 
share.setType(type); 
share.putExtra(Intent.EXTRA_STREAM, bmpUri); 
startActivity(Intent.createChooser(share, "Share to")); 
Powiązane problemy