当前位置: 首页 > 面试题库 >

Android ACTION_IMAGE_CAPTURE有时不调用onActivityResult

曾云
2023-03-14
问题内容

在我们的代码中,我们使用如下所示的getPhoto方法:

public void getPhoto(View view) {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    captureFile = new File(getCaptureFilePath());
    captureUri = Uri.fromFile(captureFile);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, captureUri);

    startActivityForResult(intent, CAPTURE_IMAGE);
}

和onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    Log.w(TAG, "Came");

    if (resultCode == RESULT_OK) {
        if (requestCode == CAPTURE_IMAGE) {
            try {
                captureFile = new File(getCaptureFilePath());
                captureUri = Uri.fromFile(captureFile);

                Bitmap scaledBitmap = decodeFileAndResize(captureFile);
                saveResizedAndCompressedBitmap(scaledBitmap);

                Bitmap rotatedBitmap = convertToRotatedBitmap(scaledBitmap);
                driverPhoto.setImageBitmap(rotatedBitmap);

                Log.w(TAG, "Before recycle");

                if (rotatedBitmap != scaledBitmap) {
                    scaledBitmap.recycle();
                    scaledBitmap = null;
                    System.gc();
                }

                Log.w(TAG, "After recycle");
            } catch (IOException e) {
                BugSenseHandler.log(TAG, e);
            }
        }
    }
}

有时,当我按“确定”时,onActivityResult不会被调用(Came未写)。我的代码有什么问题?

编辑: 未调用12-04 12:43:36.040: INFO/WindowManager(145): WIN DEATH: Window{40839990 com.skalar/com.skalar.activities.RegisterActivity paused=false}时出现在代码中onActivityResult


问题答案:

您的活动是否有可能被杀死,这就是onActivityResult未被执行的原因?当相机的Intent返回时,通常将执行onActivityResult和onResume。在您的onPause和onResume方法中放入一条日志语句,并检查执行顺序。



 类似资料:
  • 我试图接收通过Mediastore拍摄的图像的URI。ACTION_IMAGE_CAPTURE意图,但由于某种原因,默认相机应用程序(谷歌)甚至在返回我的活动之前和我的代码到达onActivityResult()之前就崩溃了。我怀疑这与我制作意图的方式有关,但我不确定。这是我的代码: 如果有人要求,我也可以添加我的onActivityResult代码,不过我不确定它在这里是否相关。 以下是logc

  • 我想做一个象棋游戏,我想在游戏循环中的一个jFrame上调用方法。这个特殊的JFrame显示了每个玩家的总击杀数。我很确定确实调用了repaint(),但由于某种原因,它似乎没有正确更新我的jlabel,jlabel应该保存每个玩家的击杀数值。 这是我为自定义JFrame扩展类编写的代码,该类包含代表kill的JLabel。 然后我只是在不同类的main方法中调用这个框架的repaint(): 非

  • 当我的设备联机时,RecyclerView适配器会按预期工作。脱机时,不会调用onCreateViewHolder。 首先,我知道这一点:Recyclerview不会调用CreateViewHolder,这不是问题所在。getItemCount()返回一个数字 所以,它似乎与在线/离线状态有关,但我无法弄清楚如何。这是适配器:

  • 我使用带有ViewPager的FragmentPagerAdapter来切换片段 那么我如何使片段调用它们的onResume()呢?

  • 我需要一个简单的Java服务,它在系统启动时启动,并使用共享库与一些使用POSIX线程的功能。在实现JNI接口时,我遇到了一个问题,它不允许我从本地代码调用Java方法。GetMethodID()返回not NULL,所以我认为它做得很好。也没有任何可疑的错误可以帮助。所以我在log中添加了很多输出,并为此准备了一个简单的java测试。(下面列出了所有代码,但是project也可以在github的

  • 这是python游戏的基本战利品表。 常见的,如果滴滚动到任何数字,包括13 不寻常,如果下降滚动14通过,并在18 如果跌落在19或20滚动 即使在满足条件的情况下,该程序也会忽略罕见掉落表,而是从罕见掉落表中取出一个项目,例如掉落=20 1000金币 有人能解释一下这里的问题吗?