0

Ich bin neu in Android-Entwicklung. Ich arbeite an Bildern und Videos in der Galerie. Ich lade das Bild oder Video von der Galerie hoch. Ich habe die Cursor-Werte Null zurückgeben.Kann Bild und Video von der Galerie in einigen Android-Handys nicht hochladen

Erste

1) Warum das Problem aufgetreten ist, wenn Upload-Bild oder Video?

2) Wie man diesen Fehler löst?

I verwendet und Video zu und Bild von 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(); 
      } 
     }` 

Antwort

0

Da Sie 6.0 Android erwähnt haben, nur, wenn Sie die Berechtigungen lesen gegeben haben und schreiben der Plattenspeicher, bevor Sie es versuchen. Ausgehend von Eibisch, hat Android Runtime-Berechtigungen gestartet, was bedeutet, standardmäßig die meisten der vorgesehenen Berechtigungen im Android Manifest funktioniert nicht wirklich, wenn Sie es zur Laufzeit zur Verfügung stellen

https://developer.android.com/training/permissions/requesting.html

+0

ich die Erlaubnis, in Manifest-Datei erwähnt. Ich habe das Ziel SDK 22 eingestellt. –

Verwandte Themen