2017-09-29 1 views
1

Ich entwickle eine Datei hochladen Android-Anwendung. Mein Ziel ist es, die vom Benutzer ausgewählte Datei vom Dateimanager auf einen Remote-Server hochzuladen. Wenn jedoch eine Google Drive-Datei ausgewählt ist, schlägt das Hochladen von Dateien aufgrund eines leeren Pfads fehl. Kann mir jemand helfen ?Dateipfad ist leer für Google Drive-Dateien

Mein Code ist:

private void showFileChooser() { 
    Intent intent = new Intent(); 
    intent.setType("*/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 
    intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 
    startActivityForResult(Intent.createChooser(intent, "Choose File to Upload.."), PICK_FILE_REQUEST); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == Activity.RESULT_OK) { 
     if (requestCode == PICK_FILE_REQUEST) { 
      if (data == null) { 
       //no data present 
       return; 
      } 
      Uri selectedFileUri = data.getData(); 
      selectedFilePath = FilePath.getPath(mActivity, selectedFileUri); 
      if (selectedFilePath != null && !selectedFilePath.equals("")) { 
       callUploadDocumentAPI(); 
      } else { 
       Toast.makeText(mActivity, StringConstants.CANT_UPLOAD_TO_SERVER, Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 
+0

Können Sie Ihren Code teilen? – notyou

+0

Ich habe meinen Code in der Frage jetzt geschrieben – Abhi

+0

'callUploadDocumentAPI()' nimm keine Argumente? Wie dauert es 'selectedFilePath'? – Kristopher

Antwort

0

Aber wenn eine Google Drive-Datei ausgewählt ist, schlägt das Hochladen von Dateien wegen leeren Pfades.

FilePath.getPath(mActivity, selectedFileUri) kann nicht funktionieren. Eine Uri ist keine Datei.

ein ContentResolver und openInputStream() Verwenden Sie ein InputStream auf den Inhalt der Uri identifiziert zu bekommen. Verwenden Sie entweder InputStream direkt oder verwenden Sie sie, um Ihre eigene Kopie des Inhalts in einer von Ihnen kontrollierten Datei zu erstellen, und verwenden Sie diese Kopie dann.

+0

Haben Sie die Idee, danke – Abhi

Verwandte Themen