如何在发送 WhatsApp 聊天邮件时让我的 Android 应用程序出现在应用程序选择器中?
How to make my Android app appear in the app chooser when emailing a WhatsApp chat?
我有兴趣让我的应用出现在我使用 WhatsApp 中的 "email conversation" 功能时显示的应用列表中。
在使用 "email conversation" WhatsApp 功能记录我的 phone 时,我可以看到 Gmail 收到了 SEND_MULTIPLE
意图:
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
所以我想我需要在我的应用程序清单中为 SEND_MULTIPLE
操作添加一个意图过滤器。
目前我的 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>
但是,当我通过 Android Studio 在我的 phone 中 运行 我的应用程序时,它在尝试导出我的 WhatsApp 对话时没有显示。相反,当尝试分享我的图库图片时,它会出现在应用程序选择器中。
我在 AndroidManifest 中缺少什么阻止我的应用程序在通过电子邮件发送我的 WhatsApp 对话时显示?我是否需要向 OS 宣布其他事项,以使我的应用程序有资格出现在应用程序选择器中?
我已尝试安装 K-9 Mail 应用程序。安装后,在 WhatsApp 中通过电子邮件发送聊天时,它不会出现在应用程序选择器中,但在 K-9 中设置帐户后,它会出现在选择器中。有没有可能是K9向OS宣布可以发送邮件了?
谢谢!
不幸的是,即使您的清单配置正确,您在发送电子邮件聊天时也无法在应用选择器中看到您的应用,因为您的应用需要被 WhatsApp 列入白名单。 WhatsApp 的应用程序选择器中只会显示所选的软件包名称。
例如,我们有一个包名称为 com.example.whatsappemailchat
的应用程序。 AndroidManifest.xml
是这样的:
<?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>
这是 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'
}
}
}
一切都已正确配置,我们 运行 我们的应用程序,但是如果我们选择 More > Email chat
我们的应用程序将不会出现。
现在将build.gradle
中的applicationId
改为com.google.android.gm.test
(Gmail的包名加.test
作为后缀,避免与真正的Gmail冲突):
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'
}
}
}
现在 运行 我们的应用程序,打开 WhatsApp,select 聊天,选择 More > Email chat
我们的应用程序将神奇地出现在应用程序选择器中,如您在此屏幕截图中所见:
我可以确认这些软件包名称已被 WhatsApp 列入白名单:
- com.google.android.gm
- com.fsck.k9
- com.boxer.email
- com.google.android.email
我认为唯一可行的解决方案是尝试联系 WhatsApp 并询问是否可以将您的包名称列入白名单。
我有兴趣让我的应用出现在我使用 WhatsApp 中的 "email conversation" 功能时显示的应用列表中。
在使用 "email conversation" WhatsApp 功能记录我的 phone 时,我可以看到 Gmail 收到了 SEND_MULTIPLE
意图:
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
所以我想我需要在我的应用程序清单中为 SEND_MULTIPLE
操作添加一个意图过滤器。
目前我的 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>
但是,当我通过 Android Studio 在我的 phone 中 运行 我的应用程序时,它在尝试导出我的 WhatsApp 对话时没有显示。相反,当尝试分享我的图库图片时,它会出现在应用程序选择器中。
我在 AndroidManifest 中缺少什么阻止我的应用程序在通过电子邮件发送我的 WhatsApp 对话时显示?我是否需要向 OS 宣布其他事项,以使我的应用程序有资格出现在应用程序选择器中?
我已尝试安装 K-9 Mail 应用程序。安装后,在 WhatsApp 中通过电子邮件发送聊天时,它不会出现在应用程序选择器中,但在 K-9 中设置帐户后,它会出现在选择器中。有没有可能是K9向OS宣布可以发送邮件了?
谢谢!
不幸的是,即使您的清单配置正确,您在发送电子邮件聊天时也无法在应用选择器中看到您的应用,因为您的应用需要被 WhatsApp 列入白名单。 WhatsApp 的应用程序选择器中只会显示所选的软件包名称。
例如,我们有一个包名称为 com.example.whatsappemailchat
的应用程序。 AndroidManifest.xml
是这样的:
<?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>
这是 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'
}
}
}
一切都已正确配置,我们 运行 我们的应用程序,但是如果我们选择 More > Email chat
我们的应用程序将不会出现。
现在将build.gradle
中的applicationId
改为com.google.android.gm.test
(Gmail的包名加.test
作为后缀,避免与真正的Gmail冲突):
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'
}
}
}
现在 运行 我们的应用程序,打开 WhatsApp,select 聊天,选择 More > Email chat
我们的应用程序将神奇地出现在应用程序选择器中,如您在此屏幕截图中所见:
我可以确认这些软件包名称已被 WhatsApp 列入白名单:
- com.google.android.gm
- com.fsck.k9
- com.boxer.email
- com.google.android.email
我认为唯一可行的解决方案是尝试联系 WhatsApp 并询问是否可以将您的包名称列入白名单。