我一直在试图建立一个应用程序,显示为一个可选的图像源,当用户试图使用WhatsApp的分享图像。 到目前为止,我已经设法让我的应用程序在WhatsApp的使用意图过滤器的发射服务选择器出现,但我不能让图像正常返回的WhatsApp。 林下面张贴我的代码:
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;
}
该应用程序打开,我选择的图像,但WhatsApp的报告图像不能共享。 logcat中未显示任何错误或警告。
我读了资源的WhatsApp的意向过滤器- >共享图像
但没有提及如何或由应用程序返回的,所以我完全茫然我在这里什么。