android+授权成功返回resultcode为-1,android – Camera始终将resultCode返回为0
时间: 2024-05-29 11:15:48 浏览: 16
在 Android 中,`startActivityForResult()` 方法启动一个新的 Activity 并等待其返回结果。当子 Activity 完成其任务并关闭时,会调用 `setResult()` 方法设置返回结果。这个返回结果会传递给父 Activity 的 `onActivityResult()` 方法。在 `onActivityResult()` 方法中,可以根据返回结果执行不同的操作。
对于你提到的两个问题:
1. 授权成功返回resultCode为-1:这是正常的情况。在 Android 中,`Activity.RESULT_OK` 的值就是-1,表示操作成功。所以当你的授权操作成功时,返回码就应该是-1。
2. Camera 始终将 resultCode 返回为0:这个问题可能是由于你的代码没有正确设置返回结果。在使用 Camera 时,你需要在拍照或录像完成后调用 `setResult()` 方法设置返回结果。如果没有设置返回结果,就会默认返回 0,表示操作失败。请确保你的代码正确设置了返回结果。
相关问题
Android 打开/storage/emulated/0/DCIM/Camera/ 从中选择一张照片返回
以下是Android打开相册并选择照片的代码示例:
```java
// 在Activity中调用以下方法
private static final int REQUEST_CODE = 1;
private static final int PERMISSION_REQUEST_CODE = 2;
// 检查是否有读取存储权限
private boolean checkPermission() {
int result = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE);
return result == PackageManager.PERMISSION_GRANTED;}
// 请求读取存储权限
private void requestPermission() {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
}
// 处理权限请求结果
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(MainActivity.this, "Permission granted successfully!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Permission denied, please grant the permission to access the gallery.", Toast.LENGTH_SHORT).show();
}
break;
}
}
// 打开相册
private void openGallery() {
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, REQUEST_CODE);
}
// 处理选择照片的结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
// 在这里可以使用picturePath来处理选择的照片
}
}
```
请注意,为了访问存储,您需要在AndroidManifest.xml文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
```
如果您的应用程序运行在Android 10或更高版本上,则还需要在AndroidManifest.xml文件中添加以下代码:
```xml
<application
android:requestLegacyExternalStorage="true"
...>
...
</application>
```
android+studio照相机调用
可以使用Android Studio中的Camera API来调用照相机。以下是调用照相机的步骤:
1. 在AndroidManifest.xml文件中添加相机权限:
```xml
<uses-permission android:name="android.permission.CAMERA" />
```
2. 在布局文件中添加一个按钮,用于触发照相机:
```xml
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Take a photo" />
```
3. 在Activity中添加以下代码:
```java
private static final int REQUEST_IMAGE_CAPTURE = 1;
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dispatchTakePictureIntent();
}
});
}
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
// Do something with the imageBitmap
}
}
```
4. 运行应用程序并单击按钮以调用照相机。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)