2013-06-06 4 views
2

J'ai essayé de télécharger un fichier à partir de mon application Android en lançant manuellement Google Drive (installé sur l'appareil). J'ai essayé ceci pour envoyer en utilisant Intent.createChooser et son travail bien pour télécharger la pièce jointe. Mais je dois télécharger le fichier pour une intention spécifique (comme Dropbox, lecteur Google uniquement). Donc, j'ai changé le code et essayé de télécharger un fichier sur Google Drive comme façons, mais sans succès, que l'application de Google Drive est ouvert sur l'appareil, aucun fichier téléchargé:Android Lancer une application Google Drive à partir d'une autre application n'a pas téléchargé le fichier

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, "attach a file test"); 
intent.addCategory(Intent.ACTION_ATTACH_DATA); 
startActivity(intent); 

Peut-on télécharger un fichier PDF par l'ouverture l'intention manuellement comme ci-dessus?

Répondre

14

J'ai obtenu la solution pour exécuter le code suivant après la recherche:

import android.support.v4.app.ShareCompat; 

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

De même, nous pouvons utiliser pour d'autres l'intention de partager et le nom du paquet correspondant de quelques intentions sont comme ci-dessous:

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

Pour le partage de gmail, nous devons utiliser le type suivant de code:

Uri zipUri = Uri.parse("file://sdcard/sdcard0/test.zip"); 
String[] emailArr = {"[email protected]"};    
Intent shareIntent = ShareCompat.IntentBuilder.from(this) 
            .setText("Share ZIP doc") 
            .setType("application/zip") 
            .setEmailTo(emailArr) 
            .setStream(zipUri) 
            .setSubject("Share zip doc") 
            .setText("Sent with email app.") 
            .getIntent() 
          .setPackage("com.google.android.gm"); 
startActivity(shareIntent); 
+0

obtenant cette erreur. Impossible de démarrer l'activité ComponentInfo {com.example.driveshareintent/com.example.driveshareintent.MainActivity}: android.content.ActivityNotFoundException: Aucune activité trouvée pour gérer Intent {act = android.intent.action.SEND typ = application/pdf flg = 0x80001 pkg = com.google.android.apps.docs (a un clip) (a des extras)} –

+1

@Ravi: Vous devez installer l'application: donc vérifiez toujours cette exception! (ou vous avez utilisé un nom de paquet non existant) – Roel

+0

Si je peux upvote 100 fois dans une heure je passerai une heure pour cette réponse ..... l'homme impressionnant –

Questions connexes