2013-10-01 28 views
8

Tôi đang cố gắng thêm hình ảnh vào mục đích chia sẻ twitter của mình. Tôi lưu một hình ảnh cục bộ trong một lớp và sau đó trong một hình ảnh khác, tôi lấy hình ảnh và cố gắng đính kèm với ý định của mình.thêm hình ảnh vào mục đích chia sẻ twitter android

Đây là mã của tôi

private void shareTwitter(){ 

    try { 

     FileInputStream fis; 
     fis = getActivity().openFileInput("photo.jpg"); 
     Bitmap shot = BitmapFactory.decodeStream(fis); 
     File file = new File(MapView.path, "snapshot.jpg"); 
     if(file.exists()){ 
      Log.i("FILE", "YES"); 
     }else{ 
      Log.i("FILE", "NO"); 
     } 
     Uri uri = Uri.parse(file.getAbsolutePath()); 
     //Uri uri = Uri.parse("android.resource://com.gobaby.app/drawable/back");    
      Intent intent = new Intent(Intent.ACTION_SEND); 
      intent.setType("/*"); 
      intent.setClassName("com.twitter.android", "com.twitter.android.PostActivity"); 
      intent.putExtra(Intent.EXTRA_TEXT, "Thiws is a share message"); 
      intent.putExtra(Intent.EXTRA_STREAM, uri); 
      startActivity(intent);    

    } catch (final ActivityNotFoundException e) { 
     Toast.makeText(getActivity(), "You don't seem to have twitter installed on this device", Toast.LENGTH_SHORT).show(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

Tại thời điểm này không có ngoại lệ trong logcat của tôi ứng dụng của tôi chỉ hiển thị một bánh mì nướng nói hình ảnh không thể tải.

Vui lòng làm gì sai?

+0

Chạy qua một 'debug run' từng bước và kiểm tra các biến của bạn. –

+0

Tôi nên kiểm tra biến nào? cho người mới bắt đầu là phương pháp này đúng không? Tôi đã kiểm tra xem tập tin có được tìm thấy không. –

+0

Bạn đã có thể lưu thành công mọi thứ vào twitter? –

Trả lời

10

Đây là những gì bạn cần

intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file); 
+0

Cảm ơn rất nhiều. Công trình tốt bây giờ –

+1

Tôi đã có ứng dụng twitter, sau đó nó cũng đi để bắt ** "Bạn dường như không có twitter được cài đặt trên thiết bị này" ** –

7

này có thể hữu ích cho ai đó:

private void sendShareTwit() { 
    try { 
     Intent tweetIntent = new Intent(Intent.ACTION_SEND); 

     String filename = "twitter_image.jpg"; 
     File imageFile = new File(Environment.getExternalStorageDirectory(), filename); 

     tweetIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.twitter_share_text)); 
     tweetIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(imageFile)); 
     tweetIntent.setType("image/jpeg"); 
     PackageManager pm = getActivity().getPackageManager(); 
     List<ResolveInfo> lract = pm.queryIntentActivities(tweetIntent, PackageManager.MATCH_DEFAULT_ONLY); 
     boolean resolved = false; 
     for (ResolveInfo ri : lract) { 
      if (ri.activityInfo.name.contains("twitter")) { 
       tweetIntent.setClassName(ri.activityInfo.packageName, 
         ri.activityInfo.name); 
       resolved = true; 
       break; 
      } 
     } 

     startActivity(resolved ? 
       tweetIntent : 
       Intent.createChooser(tweetIntent, "Choose one")); 
    } catch (final ActivityNotFoundException e) { 
     Toast.makeText(getActivity(), "You don't seem to have twitter installed on this device", Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

weldone @agamov nó hoạt động tốt –

1

Bạn có thể tải về mã nguồn đầy đủ here

Bitmap b =BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher); 
Intent share = new Intent(Intent.ACTION_SEND); 
share.setType(“image/jpeg”); 
ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
b.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
String path = MediaStore.Images.Media.insertImage(getContentResolver(), b, “Title”, null); 
Uri imageUri = Uri.parse(path); 
share.putExtra(Intent.EXTRA_STREAM, imageUri); 
startActivity(Intent.createChooser(share, “Select”)); 
Các vấn đề liên quan