6 Stimmen

Android startet eine Google Drive-Anwendung aus einer anderen Anwendung heraus, ohne eine Datei hochzuladen

Ich habe versucht, eine Datei von meiner Android-Anwendung aus manuell zu Google Drive hochzuladen (die auf dem Gerät installiert ist). Ich habe versucht, dies mit Intent.createChooser zu senden und es funktioniert gut zum Hochladen von Dateianhängen. Aber ich muss eine Datei nur für bestimmte Intents hochladen (wie Dropbox, nur Google Drive). Also habe ich den Code geändert und versucht, eine Datei auf Google Drive hochzuladen, wie folgt, aber ohne Erfolg, nur die Google Drive-App wird auf dem Gerät geöffnet, keine Datei hochgeladen:

PackageManager pm = this.getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.google.android.apps.docs");
intent.setType("application/pdf");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://sdcard/sdcard0/test.pdf"));
intent.putExtra(Intent.EXTRA_SUBJECT, "Anhang einer Testdatei");
intent.addCategory(Intent.ACTION_ATTACH_DATA);
startActivity(intent);

Können wir eine PDF-Datei hochladen, indem wir den Intent wie oben manuell öffnen?

17voto

user2459928 Punkte 231

Ich habe die Lösung für das Ausführen des folgenden Codes nach Recherche gefunden:

import android.support.v4.app.ShareCompat;

Uri pdfUri = Uri.parse("file://sdcard/sdcard0/test.pdf");                
Intent shareIntent = ShareCompat.IntentBuilder.from(this)
                                     .setText("PDF-Dokument teilen")
                                         .setType("application/pdf")
                                         .setStream(pdfUri )
                                         .getIntent()
                                 .setPackage("com.google.android.apps.docs");
startActivity(shareIntent);

Ebenso können wir für andere Share-Intents verwenden und die entsprechenden Paketnamen einiger Intents sind wie folgt:

  • com.dropbox.android = Dropbox
  • com.android.bluetooth = Bluetooth
  • com.android.email = E-Mail
  • com.google.android.gm = Gmail
  • com.microsoft.skydrive = Skydrive
  • com.google.android.apps.docs = Google Drive

Für das Teilen über Gmail müssen wir den folgenden Code verwenden:

Uri zipUri = Uri.parse("file://sdcard/sdcard0/test.zip");  
String[] emailArr = {"test@gmail.com"};              
Intent shareIntent = ShareCompat.IntentBuilder.from(this)
                                  .setText("ZIP-Dokument teilen")
                                  .setType("application/zip")
                                  .setEmailTo(emailArr)
                                  .setStream(zipUri)
                                  .setSubject("ZIP-Dokument teilen")
                                  .setText("Mit E-Mail-App gesendet.")
                                  .getIntent()
                           .setPackage("com.google.android.gm");
startActivity(shareIntent);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X