Код: Выделить всё
package com.example.myapplication;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.VideoView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.CognitoCachingCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.regions.Region;
import com.amazonaws.services.s3.model.ObjectMetadata;
import java.io.File;
import java.io.InputStream;
public class MainActivity extends AppCompatActivity {
private static final int IMAGE_PICK_CODE = 1000;
private static final int VIDEO_PICK_CODE = 1001;
AmazonS3 s3Client;
Uri selectedImageUri, selectedVideoUri;
ImageView ivSelectedImage;
VideoView vvSelectedVideo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize AWS S3 client
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
getApplicationContext(),
"Pool_Id", // Identity Pool ID
Regions.Region // Your region
);
BasicAWSCredentials credentials = new BasicAWSCredentials("Access_key", "Secret_key");
s3Client = new AmazonS3Client(credentialsProvider);
s3Client.setRegion(Region.getRegion(Regions.EU_NORTH_1));
ivSelectedImage = findViewById(R.id.ivSelectedImage);
vvSelectedVideo = findViewById(R.id.vvSelectedVideo);
Button btnSelectImage = findViewById(R.id.btnSelectImage);
Button btnSelectVideo = findViewById(R.id.btnSelectVideo);
Button btnSubmit = findViewById(R.id.btnSubmit);
// Handle Image Selection Button Click
btnSelectImage.setOnClickListener(v -> {
openImagePicker();
});
// Handle Video Selection Button Click
btnSelectVideo.setOnClickListener(v -> {
openVideoPicker();
});
// Handle Submit Button Click
btnSubmit.setOnClickListener(v -> {
if (selectedImageUri != null && selectedVideoUri != null) {
uploadFileToS3(Uri.fromFile(new File(getPathFromUri(selectedImageUri))), "image");
uploadFileToS3(Uri.fromFile(new File(getPathFromUri(selectedVideoUri))), "video");
} else {
Toast.makeText(MainActivity.this, "Please select an image and video", Toast.LENGTH_SHORT).show();
}
});
}
private void openImagePicker() {
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
startActivityForResult(intent, IMAGE_PICK_CODE);
}
private void openVideoPicker() {
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
intent.setType("video/*");
startActivityForResult(intent, VIDEO_PICK_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == IMAGE_PICK_CODE) {
selectedImageUri = data.getData();
ivSelectedImage.setImageURI(selectedImageUri);
} else if (requestCode == VIDEO_PICK_CODE) {
selectedVideoUri = data.getData();
vvSelectedVideo.setVideoURI(selectedVideoUri);
vvSelectedVideo.start();
}
}
}
public void uploadFileToS3(Uri fileUri, String category) {
try {
// Get InputStream from the file URI
InputStream inputStream = getContentResolver().openInputStream(fileUri);
if (inputStream == null) {
Toast.makeText(this, "Failed to open input stream for the file", Toast.LENGTH_SHORT).show();
return;
}
// Create metadata to handle file type and other info
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType(getContentResolver().getType(fileUri)); // Set content type (e.g., image/jpeg)
// Generate a unique file name if needed
String fileName = category + "/" + System.currentTimeMillis() + "." + getFileExtension(fileUri);
// Upload the file to S3
PutObjectRequest putObjectRequest = new PutObjectRequest("testbucket3557", fileName, inputStream, metadata);
s3Client.putObject(putObjectRequest);
// Close the input stream
inputStream.close();
Toast.makeText(this, "File uploaded successfully", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
private String getFileExtension(Uri uri) {
String extension = "";
String mimeType = getContentResolver().getType(uri);
if (mimeType != null) {
String[] parts = mimeType.split("/");
if (parts.length > 1) {
extension = parts[1]; // Extract file extension
}
}
return extension;
}
public String getPathFromUri(Uri uri) {
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(projection[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
return filePath;
} else {
return uri.getPath();
}
}
}
Код: Выделить всё
Я пытался редактировать разрешения, но ничего не помогло. Конкретная ошибка показана на изображении. Та же ошибка и для видео
введите здесь описание изображения
Подробнее здесь: https://stackoverflow.com/questions/791 ... -s3-bucket