2015-05-26 2 views
0

Я пытаюсь захватить изображение, а затем поделиться им с приложениями.Совместное использование изображения с помощью Intent failed

private static final int CAMERA_REQUEST = 1888; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_result); 

     Intent cameraIntent = new Intent(
       android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

     startActivityForResult(cameraIntent, CAMERA_REQUEST); 
     //start the camera and capture an image 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { 

     Uri imageUri = data.getData(); 
     //convert captured Image from Intent form to URI 

     Intent shareIntent = new Intent(); 
     shareIntent.setAction(Intent.ACTION_SEND); 
     shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri); 
     shareIntent.setType("image/jpeg"); 
     startActivity(shareIntent); 
     //share the image 

    } 
} 

Но когда я запустил этот код, изображение не будет использоваться совместно. Есть ли ошибка в моем коде?

Есть ли другой способ совместного использования изображения без сохранения его в памяти?

+3

Скорее всего, в onActivityResult data.getData() возвращает нуль. Не могли бы вы проверить его? – Alexander

+2

Он возвращает null. Как я могу это исправить? – Confuse

+2

Пожалуйста, попробуйте этот код: http://stackoverflow.com/a/22218309/1796309, если вам это не поможет, я напишу правильный код для вас – Alexander

ответ

0

Я хотел бы поблагодарить Alexander за помощь в поиске решения.

Вот рабочий код -

private static final int CAMERA_REQUEST = 1888; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_result); 
     Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(cameraIntent, CAMERA_REQUEST); 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { 
     final Intent intent = new Intent(android.content.Intent.ACTION_SEND); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 
       .putExtra(Intent.EXTRA_STREAM, 
       Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), 
         (Bitmap) data.getExtras().get("data"), "title", null) 
       )) 
       .setType("image/jpeg"); 
     startActivity(intent); 
    } 
} 
0
Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
Uri screenshotUri = Uri.parse("android.resource://com.android.test/*"); 
try { 
    InputStream stream = getContentResolver().openInputStream(screenshotUri); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 
sharingIntent.setType("image/jpeg"); 
sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri); 
startActivity(Intent.createChooser(sharingIntent, "Share image using")); 
Смежные вопросы