2017-12-07 6 views
0

電子メールクライアントとGoogleドライブでファイルを共有しようとしています。今、次のコードでは、Googleドライブのみが開かれており、メールクライアントはまったく開いていません。エクストラ "EXTRA_INITIAL_INTENTS"が表示されていないインテントによって解決されたアプリケーション

val photoURI: Uri = FileProvider.getUriForFile(this, "com.emerson.oversight.com.emerson.oversight.provider", 
      File(this.cacheDir.path + "/SensorReport.pdf")) 

    val emailIntent = Intent(Intent.ACTION_SENDTO) 
    emailIntent.data = Uri.parse("mailto:") 

    emailIntent.putExtra(Intent.EXTRA_STREAM, photoURI) 
    emailIntent.putExtra(Intent.EXTRA_EMAIL, "[email protected]") 
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "dsadsada") 
    emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) 

    val driveIntent = Intent() 
    driveIntent.`package`= "com.google.android.apps.docs" 
    driveIntent.action = Intent.ACTION_VIEW 

    val fileID = File(this.cacheDir.path + "/SensorReport.pdf") 
    val url = "https://docs.google.com/file/d/" + fileID 

    driveIntent.data = Uri.parse(url) 

     val openInChooser = Intent.createChooser(driveIntent, getString(R.string.share_using)) 
     openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, arrayListOf(emailIntent)) 
     startActivity(openInChooser) 

を必要に応じて、私はあなたがほとんど存在し

+0

kotlinではなくintentArray = new Intent [] {emailIntent};このopenInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS、intentArray)のようにintentArrayを渡します –

答えて

1

を助けてください、次のコードと同等のJavaコードを提供することができ、パズルで唯一欠けている部分を扱うことができるすべての活動を返しますgetPackageManager().queryIntentActivities方法であり、あなたの電子メールの意図。 ResolveInfoが返されると、各電子メールオプションがチューザに表示されるように意図を作成できます。次に、それらのインテントの配列をIntent.EXTRA_INITIAL_INTENTSとして渡すことができます。あなたが好きなら、特定のパッケージを除外することさえできます。コードの最後の部分は次のようになります。

 val openInChooser = Intent.createChooser(driveIntent, getString(R.string.share_using)) 

     val emailOptionIntents = mutableListOf<Intent>() 
     val resInfo = getPackageManager().queryIntentActivities(emailIntent, 0) 
     if (!resInfo.isEmpty()) { 
      for (resolveInfo in resInfo) { 
       val emailOptionIntent = Intent(Intent.ACTION_SENDTO) 
       emailOptionIntent.data = Uri.parse("mailto:") 

       emailOptionIntent.putExtra(Intent.EXTRA_STREAM, photoURI) 
       emailOptionIntent.putExtra(Intent.EXTRA_EMAIL, "[email protected]") 
       emailOptionIntent.putExtra(Intent.EXTRA_SUBJECT, "dsadsada") 
       emailOptionIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) 


       emailOptionIntent.`package` = resolveInfo.activityInfo.packageName 
       emailOptionIntents.add(emailOptionIntent) 
      } 
     } 




     openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, emailOptionIntents.toTypedArray()) 
     startActivity(openInChooser) 
+0

これを試す機会がありましたか? – donfuxx

関連する問題