- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望能够在使用默认相机玻璃器皿拍摄照片时跟踪图像文件名。这样我就可以在完成后删除它们。我有以下代码:
...
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, TAKE_PICTURE_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == TAKE_PICTURE_REQUEST && resultCode == RESULT_OK) {
String imgPath = data.getStringExtra(Intents.EXTRA_PICTURE_FILE_PATH);
mService.addToImageQueue(imgPath);
}
else if (requestCode == TAKE_PICTURE_REQUEST && resultCode == RESULT_CANCELED) {
...
}
}
如果我点击,resultCode 将返回 RESULT_OK
。当我关闭(向下滑动)时,我得到 resultCode RESULT_CANCELED
。这就是我想要它工作的方式,除了它仍然生成图像文件,即使 resultCode 是 RESULT_CANCELED
...老实说,我觉得这可能是一个错误,因为我尝试使用 data.getStringExtra(Intents.EXTRA_PICTURE_FILE_PATH);
并得到了 NullPointerException
。难道我做错了什么?有没有办法在 RESULT_CANCELED
上获取此文件名?
最佳答案
您可以先创建一个临时文件(查看 this tutorial 中的 createImageFile()
方法)。如果成功创建,请执行两件事:
putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile))
)。如果 resultCode 为 RESULT_CANCELED
,您现在可以追溯到临时文件的路径并对其调用 delete()
。
这里是一些示例代码:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK) {
Log.v("MainActivity", "Result successful.");
} else if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_CANCELED) {
Log.v(TAG, "Result canceled. Uri of file is " + mCurrentPhotoPath);
File file = new File(mCurrentPhotoPath);
if (file.exists()) {
Log.v(TAG, "File exists.");
if(file.delete()) {
Log.v(TAG, "File was successfully deleted!");
} else {
Log.v(TAG, "File not successfully deleted.");
}
} else {
Log.v(TAG, "File does not exist!");
}
}
}
注意:要使 new File(mCurrentPhotoPath)
正常工作,请从 mCurrentPhotoPath
的开头删除“file:”。
关于java - RESULT_CANCELED 上的图片文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28911623/
我希望能够在使用默认相机玻璃器皿拍摄照片时跟踪图像文件名。这样我就可以在完成后删除它们。我有以下代码: ... Intent intent = new Intent(M
我想用我的相机拍照。我只是暂时需要它们,所以我执行以下操作: private void takePicture() { Intent intent = new Intent(MediaStor
在获取当前位置流时,我使用 SettingsClient 根据当前 LocationRequest 检查是否满足位置设置。目前,我的优先级设置为 HIGH_ACCURACY,这需要不惜一切代价启用 G
我有 2 个 Activity 类和 1 个 Non-Activity 类,它们从传入构造函数的 Context 调用 startActivityForResult()。它看起来是这样的:FirstA
我正在尝试使用 MediaStore.ACTION_IMAGE_CAPTURE Intent 拍摄个人资料照片。 启动 Intent 的代码: Intent cameraIntent = new In
我正在尝试使用 startActivityForResult() 获取拨号器 Intent 的结果 下面是我的拨号器 Intent 代码。 button.setOnClickListe
我是 Java 和 Android 新手,但我有一个应用程序可以从相机拍摄照片并将其保存为文件。我可以启动相机并拍照,但在 onActivityResult 中,resultCode 始终为 RESU
我可能以错误的方式解决了这个问题.. 我正在做的是在没有互联网连接时显示一条警告消息,“确定”按钮会将用户引导至 wifi 设置以打开互联网。当用户在更改(或不更改)互联网设置后返回到应用程序时,我希
我有一个期望用户选择项目的 Activity ,但用户可以选择单击后退按钮而不选择项目。这个“项目选择” Activity 是从 startActivityForResult() 开始的。 我想知道两
我想知道以下问题。在 Android 文档中,他们推荐以下内容: “提示:当您的配置 Activity 首次打开时,将 Activity 结果设置为 RESULT_CANCELED,以及 EXTRA_
首先,这不是过早返回结果代码的常见问题。在这种情况下,只有在画廊中挑选了一个项目后才会返回。 在我的测试用例中,我使用以下代码调用图库: Intent intent = new Intent(); i
我正在构建一个自定义启动器。我已经按照步骤在 Android 文档中提到用于托管 App Widgets 以及浏览默认启动器源代码。但是,当我使用作为 AppWidgetManager.ACTION_
我正在尝试将 Google 云端硬盘应用到我的 Android 应用程序,但我什至无法连接到 Api 客户端。我不知道为什么: 我已经在开发者控制台中为 ~/.android/debug.keysto
我正在启动从图库中挑选图片的 Intent ,但 Intent 总是返回结果代码 RESULT_CANCELED。我尝试了很多不同的代码,但没有任何帮助让我觉得我可能遗漏了一些东西,比如在 Andro
这是我的问题,我的主视图只显示一个按钮,按下此按钮会显示另一个 View 。此 View 只有另一个按钮,当按下此按钮时,当前 View 结束,控件返回上一个 View 。 为了显示我使用 start
我的小部件有一些问题。这是描述: 上下文: 我有一个家庭小部件。 当我添加它时,它会弹出一个配置 Activity ,用于为小部件设置一些参数。 如果我在完成配置Activity之前调用setResu
我一直在搜索 Google 文档和示例代码以及 Stack Overflow 以寻找解决方案,虽然我看到很多人遇到相同的症状,但我没有找到任何对我的具体情况有帮助的东西. 基本上我正在尝试为 Goog
在一种特殊情况下,我一直在努力使用新的 LocationServices.SettingsApi。我已经在 SplashActivity 上编写了用于位置设置的代码(自动打开 GPS 的 Google
我的 Activity 中有以下按钮,可打开图库以选择单个或多个图像,在此下方是 OnActivityResult 函数,返回结果为 RESULT_CANCELLED 用于多张图片,RESULT_OK
当出现分享弹窗时,我在 WhatsApp 上分享内容成功,但仍然返回 RESULT_CANCELLED。当我使用 Gmail 发送电子邮件时,结果相同。 使用 startActivityForResu
我是一名优秀的程序员,十分优秀!