I've been trying to build an app that shows up as an optional image source when a user tries to share an image using whatsapp. So far I have managed to get my app to show up in the service picker that whatsapp launches using intent filters but I cannot get the image to return correctly to whatsapp. Im posting my code below :
public void returnImage(View v){
//Bitmap img;
//Bundle selectedImage = new Bundle();
Uri imageURI;
Intent shareIntent = new Intent();
switch(v.getId()){
case R.id.eric1 :
imageURI = saveToCache(R.drawable.cartman1);
shareIntent.putExtra(Intent.EXTRA_STREAM, imageURI);
shareIntent.setType("image/png");
setResult(RESULT_OK, shareIntent);
Utils.makeToast("Selected",this);
System.out.println("--------------------------------");
System.out.println(imageURI.toString());
finish();
}
}
private Uri saveToCache(int resID) {
// TODO Auto-generated method stub
Bitmap image = BitmapFactory.decodeResource(getResources(), resID);
File imageFile;
Date d = new Date();
String imgName = ((Long.toString(d.getTime())).subSequence(1,
9)).toString();
String state = Environment.getExternalStorageState();
printDebug(state);
if (Environment.MEDIA_MOUNTED.equals(state)) {
File file = getExternalFilesDir(null);
if (file != null) {
try {
//String root = file.getAbsolutePath();
imageFile = new File(file, imgName+".png");
printDebug(imageFile.getAbsolutePath());
FileOutputStream stream = new FileOutputStream(imageFile);
boolean complete = image.compress(Bitmap.CompressFormat.PNG, 100,
stream);
if (!complete) {
Log.d("tag", "image not saved");
}
Log.d("tag", "image saved");
// Tell the media scanner about the new file so that it is
// immediately available to the user.
MediaScannerConnection.scanFile(this,
new String[] { imageFile.toString() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
}
});
return Uri.parse(imageFile.getAbsolutePath());
} catch (IOException e) {
Log.d("tag", "Can't save image", e);
}
}
}
return null;
}
The app opens and i select the image but whatsapp reports that the image cannot be shared. LogCat shows no errors or warnings.
I read the resource Intent-Filter for Whatsapp -> share image
but there is no mention of how or what was returned by the app so I'm at a complete loss here.