我有四个设备,其中一个是Samsung Galaxy 6,我最近注意到,当我尝试结束裁剪 Activity 并发送回数据时,永远不会调用onActivityResult
。取而代之的是,它奇怪地跳过了onActivityResult
应该打开的类,并返回到该处的上一个 Activity 。没有崩溃,没有空值传递给此代码
Bundle extras = new Bundle();
extras.putParcelable(RETURN_DATA_AS_BITMAP, croppedImage);
extras.putIntArray(RETURN_CROP_INFO, cropInfo);
setResult(RESULT_OK,(new Intent()).setAction(ACTION_INLINE_DATA).putExtras(extras));
finish();
永远不会调用
onActivityResult
。@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode == RESULT_OK) {
if (requestCode == Constants.INSTANCE.PICK_FROM_FILE ) {
if (data != null) {
try {
有人知道这可能是什么吗?三星和另一部手机都在运行 Lollipop 。
这是自定义裁剪器的激活。尽管自定义裁剪器代码相当大,所以我不确定在此处发布是否有意义。
private void performCrop(Uri picUri)
{
// create explicit intent
Intent intent = new Intent(this, CropImage.class);
String filePath = picUri.toString();
intent.putExtra(CropImage.IMAGE_PATH, filePath);
intent.putExtra(CropImage.SCALE, true);
intent.putExtra(CropImage.ASPECT_X, 3);
intent.putExtra(CropImage.ASPECT_Y, 4);
intent.putExtra("return-data", true);
intent.putExtra(CropImage.SCALE_UP_IF_NEEDED,true);
// start activity CropImage with certain request code and listen
// for result
startActivityForResult(intent, picCrop);
}
最佳答案
刚巧不小心弄清楚了这个问题。我一直在这个问题上惹恼了我。
首先,我尝试删除bundle
,然后将图像作为byte array
传递到intent
中。完成此操作后仍然无法正常工作。
然后我注意到,如果我从intent
中删除了图像,则该代码设法在所有电话上都达到了onActivityResult
。因此,我采取了一种变通方法,而不是按意向传递图像,而是将图像保存到了我在onActivityResult
中访问的另一个类中。
我相信我从中得到的是,Galaxy 6手机是我拥有的唯一一部手机,该手机创建的位图大于可以通过byte[]
或其他方式通过 Intent 传递的位图。
希望以后能对某人有所帮助!
关于android - 在一台Android设备上未调用OnActivityResult,但在另一台Android设备上调用了,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32238081/