2015-10-11 21 views
6

Sono interessato a far apparire la mia app nell'elenco delle app mostrato quando utilizzo la funzione "conversazione via email" in WhatsApp.Come far apparire la mia app per Android nel selettore app quando invii un'email a una chat di WhatsApp?

Quando si accede il mio telefono mentre si utilizza la "conversazione e-mail" caratteristica WhatsApp posso vedere un SEND_MULTIPLE intento di essere ricevuto da Gmail:

I/ActivityManager( 859): START u0 {act=android.intent.action.SEND_MULTIPLE typ=text/* flg=0xb080001 pkg=com.google.android.gm cmp=com.google.android.gm/.ComposeActivityGmail (has clip) (has extras)} from uid 10114 on display 0 

quindi suppongo che ho bisogno di aggiungere un filtro di intenti per la SEND_MULTIPLE azione la mia app manifest.

Attualmente la mia AndroidManifest.xml è:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="co.xxx.xxx" > 


<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme" > 


    <activity 
     android:name=".MyActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 


     <intent-filter> 
      <action android:name="android.intent.action.SENDTO" /> 

      <data android:scheme="mailto" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 

     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <data android:scheme="mailto" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
     </intent-filter> 

     <intent-filter> 
      <action android:name="android.intent.action.SEND_MULTIPLE" /> 

      <data android:mimeType="*/*" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 

     <intent-filter> 
      <action android:name="android.intent.action.SEND" /> 

      <data android:mimeType="*/*" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 

    </activity> 

</application> 

</manifest> 

Tuttavia, quando eseguo il mio app nel mio telefono tramite Android Studio, che non si presenta quando si cerca di esportare la mia conversazione WhatsApp. Al contrario, appare nel selettore app quando si tenta di condividere un'immagine della mia galleria.

Cosa mi manca in AndroidManifest che impedisce la visualizzazione della mia app durante l'invio di e-mail alle mie conversazioni su WhatsApp? C'è qualcos'altro che devo annunciare al sistema operativo per rendere la mia app idonea per essere visualizzata nel selettore app?

Ho provato a installare l'app K-9 Mail. Subito dopo averlo installato, non appare nel selettore dell'app quando invii un'email a una chat in WhatsApp, ma dopo aver configurato un account in K-9, appare nel selettore. È possibile che K9 annunci al sistema operativo che è pronto per inviare e-mail?

Grazie!

risposta

12

Sfortunatamente anche se il tuo manifest è configurato correttamente, non puoi vedere la tua app nel selettore app quando invii un'email a una chat perché la tua app deve essere autorizzata da WhatsApp. Solo i nomi dei pacchetti scelti saranno disponibili nel selettore app di WhatsApp.

Ad esempio, abbiamo un'app con il nome del pacchetto com.example.whatsappemailchat. Il AndroidManifest.xml è qualcosa di simile:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.whatsappemailchat" > 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.whatsappemailchat.MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.SENDTO"/> 
       <data android:scheme="mailto"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.SEND"/> 
       <data android:mimeType="*/*"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.SEND_MULTIPLE"/> 
       <data android:mimeType="*/*"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.VIEW"/> 
       <data android:scheme="mailto"/> 

       <category android:name="android.intent.category.DEFAULT"/> 
       <category android:name="android.intent.category.BROWSABLE"/> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

e questo è il build.gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

    defaultConfig { 
     applicationId "com.example.whatsappemailchat" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

tutto è configurato correttamente, si corre la nostra applicazione, ma se si sceglie More > Email chat non apparirà la nostra applicazione.

Ora cambiare il (il nome del pacchetto di Gmail più .test come suffisso per evitare la collisione con un vero Gmail) applicationId al com.google.android.gm.test nel nostro build.gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

    defaultConfig { 
     applicationId "com.google.android.gm.test" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

Ora gestiscono la nostra applicazione, aperto WhatsApp, selezionare una chat, scegliere More > Email chat e magicamente la nostra applicazione sarà in scelta app, come si può vedere in questo screenshot:

enter image description here

Posso confermare che questi nomi di pacchetto sono autorizzati da WhatsApp:

  • com.google.android.gm
  • com.fsck.k9
  • com.boxer.email
  • com.google.android.email

Credo che l'unica soluzione praticabile è quella di cercare di contattare WhatsApp e chiedere se è possibile inserire nella whitelist il nome del pacchetto.

+0

Non funziona se provo a caricarlo su Google Developer Console perché ho provato a imitare il pacchetto google. – motis10

+0

Ciao c'è comunque per aggiungere la mia applicazione alla whitelist di watsapp – prasanthMurugan