0
私はAndroid開発が初めてです。私はギャラリーの画像とビデオに取り組んでいます。私はギャラリーから画像やビデオをアップロードします。私はカーソル値を返すNULLを得ました。一部のAndroid携帯でギャラリーから画像と動画をアップロードできません
まず
1)問題が発生しているのはなぜ際アップロード画像や動画?
2)このエラーを解決するにはどうすればよいですか?
私は、あなたは、Android 6.0を言及しているので、gallery`
OpenGallery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mode = "sms";
gocodercamera.stopPreview();
isCameraMenuVisible = false;
CameraMenu.setVisibility(View.GONE);
Intent galleryIntent = new Intent(/*Intent.ACTION_GET_CONTENT*/Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
galleryIntent.setType("image/* video/*");
startActivityForResult(galleryIntent, 300);
}
});
`
OnActivityResult`
/**Picking file from Gallery*/
if (requestCode == 300) {
if (resultCode == RESULT_OK) {
try {
gocodercamera.setVisibility(View.VISIBLE);
gocodercamera.startPreview();
if (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 filepath = cursor.getString(columnIndex);
cursor.close();
if (filepath.endsWith(".jpg") || filepath.endsWith(".jpe") || filepath.endsWith(".jpeg") || filepath.endsWith(".png")) {
imagefilepath = filepath;
// uriList.add(imagefilepath);
// typesList.add("image");
Uri getCompressedUriPath = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
String getCompressedPath = compressImage(filepath, getCompressedUriPath);
if (aDetector.isConnectingToInternet()) {
sendMediaUpload(getCompressedPath, "image");
} else {
Toast.makeText(getApplicationContext(), "Please check your internet connection", Toast.LENGTH_LONG).show();
}
// ImageAdapterList myAdapter = new ImageAdapterList();
// listview.setAdapter(myAdapter);
} else {
Cursor cursor1 = MediaStore.Video.query(getContentResolver(), selectedImage, new String[]{MediaStore.Video.VideoColumns.DURATION});
cursor1.moveToFirst();
String dur = cursor1.getString(cursor1.getColumnIndex("duration"));
int duration = Integer.parseInt(dur);
duration = duration/1000;
Log.e("dur", "dur : " + dur);
Log.e("duration", "duration : " + duration);
videofilepath = filepath;
imagefilepath = videofilepath;
sendMediaUpload(imagefilepath, "video");
// ImageAdapterList myAdapter = new ImageAdapterList();
// listview.setAdapter(myAdapter);
}
} else {
// Toast.makeText(getApplicationContext(),"Sorry! Failed to select File from gallery", Toast.LENGTH_SHORT).show();
}
} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
} else if (resultCode == RESULT_CANCELED) {
gocodercamera.setVisibility(View.VISIBLE);
gocodercamera.startPreview();
// Toast.makeText(getApplicationContext(),"User cancelled to select File", Toast.LENGTH_SHORT).show();
} else {
gocodercamera.setVisibility(View.VISIBLE);
gocodercamera.startPreview();
// Toast.makeText(getApplicationContext(),"Sorry! Failed to select File", Toast.LENGTH_SHORT).show();
}
}`
でそれを提供しない限り、デフォルトではAndroidのマニフェストで提供権限のほとんどは、実際に動作しないことを意味するランタイム権限を開始しました。私は目標のSDNを設定しました22。 –