2013-05-31 26 views
7

Ứng dụng của tôi chụp ảnh và tôi muốn chia sẻ trên Instagram.Cách gửi ảnh đến Instagram bằng ứng dụng Android của tôi?

Ứng dụng của tôi lưu hình ảnh trong thư mục này

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

Bây giờ tôi đang cố gắng để có được những hình ảnh cuối cùng tôi taked để chia sẻ trong Instagram sử dụng mã này

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

tôi nhận được một Toast với thông báo lỗi này "Không thể tải xuống tệp". Bánh mì nướng này được gửi bởi Instagram.

Tôi đã cố gắng sử dụng ví dụ liên kết này - share a photo in instagram - nhưng không hoạt động.

Giúp tôi làm ơn !!!

Trả lời

17

Tôi đã giải quyết được sự cố của mình.

Tôi thêm dòng này sau camera.takePicture.

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

Dòng này thực hiện "làm mới" và sau khi điện thoại nhận dạng ảnh tin tức được lưu trong điện thoại của bạn.

Và tôi đã thực hiện một số thay đổi về phương pháp của tôi

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

Và với điều này một phương pháp tôi xác minh nếu Instagram được cài đặt trên điện thoại

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

Hãy cố gắng luôn sử dụng các phương pháp và biến tiếng Anh, tốt hơn là mọi người nên hiểu bạn đang cố gắng làm gì. – jpros

+0

Bạn cũng có thể gửi tên ứng dụng cùng với hình ảnh của mình để người khác có thể nhận ra rằng nội dung này được gửi qua một ứng dụng khác Không phải Instagram trực tiếp –

1

đặt mã này trong listener nút bấm của bạn nó sẽ chuyển hướng bạn vào ứng dụng và đảm bảo thiết bị của bạn đã cài đặt ứng dụng 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")); 
Các vấn đề liên quan