我試圖允許在我的 android 應用程式中選擇多個影像,但由于某些原因,我無法獲取在活動結果中選擇的影像的資料。當我選擇多個影像時,clipData 似乎為空,但是當我選擇單個影像時資料作業正常。這是我目前擁有的代碼。
private void selectImage() {
Intent intent = new Intent();
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, PICK_IMAGE_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
&& data != null && data.getData() != null) {
if (data.getClipData() != null) {
ClipData mClipData = data.getClipData();
Toast.makeText(getApplicationContext(), "" mClipData.getItemCount(), Toast.LENGTH_SHORT).show();
} else if (data.getData() != null) {
Toast.makeText(getApplicationContext(), "One Image", Toast.LENGTH_SHORT).show();
}
}
}
由于某些原因,當我選擇一張圖片時,我會得到一張圖片,但是當我選擇多張圖片時,沒有 toast,而我希望剪輯資料顯示所選專案(圖片)的數量。
uj5u.com熱心網友回復:
您應該洗掉檢查“data.getData() != null”,希望沒問題
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
&& data != null) {
if (data.getClipData() != null) {
ClipData mClipData = data.getClipData();
Toast.makeText(getApplicationContext(), "" mClipData.getItemCount(), Toast.LENGTH_SHORT).show();
} else if (data.getData() != null) {
Toast.makeText(getApplicationContext(), "One Image", Toast.LENGTH_SHORT).show();
}
}
}
uj5u.com熱心網友回復:
科特林
嘗試使用此代碼進行多個影像選擇。您可以使用 Image Uri 和 Image Path 這取決于您的需要是路徑還是 uri。
val PICK_IMAGE_MULTIPLE = 2
private var pathList: ArrayList<String> = ArrayList()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val imagesSelectButton:Button = findViewById(R.id.btn_selectImages)
imagesSelectButton.setOnClickListener {
photoIntentMethod()
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, intentData: Intent?) {
super.onActivityResult(requestCode, resultCode, intentData)
if (resultCode == RESULT_OK) {
if (requestCode == PICK_IMAGE_MULTIPLE) {
if (intentData!!.clipData != null) {
val mClipData = intentData.clipData
for (i in 0 until mClipData!!.itemCount) {
val item = mClipData.getItemAt(i)
val imageUri = item.uri
pathList.add(getImagePath(imageUri))
}
} else if (intentData.data != null) {
val imageUri = intentData.data
pathList.add(getImagePath(imageUri!!))
}
}
}
}
@SuppressLint("Range")
private fun getImagePath(uri: Uri): String {
var cursor: Cursor? = contentResolver.query(uri, null, null, null, null)
cursor?.moveToFirst()
var documentId: String = cursor!!.getString(0)
documentId = documentId.substring(documentId.lastIndexOf(":") 1)
cursor.close()
cursor = contentResolver.query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null, MediaStore.Images.Media._ID " = ? ", arrayOf(documentId), null
)
cursor?.moveToFirst()
val path: String = cursor!!.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA))
cursor.close()
return path
}
private fun photoIntentMethod() {
val intent = Intent()
intent.type = "image/*"
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
intent.action = Intent.ACTION_GET_CONTENT
startActivityForResult(
Intent.createChooser(intent, "Select Picture"),
PICK_IMAGE_MULTIPLE
)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/317175.html
