【发布时间】:2018-12-30 21:10:03
【问题描述】:
我正在构建一个应用程序,它会要求用户将聊天从 WhatsApp 导出到我的应用程序中。 如何在“通过..发送聊天”意图窗口中显示我的应用?
【问题讨论】:
-
我不想从我的应用程序中发送一些东西。我希望我的应用出现在通过发送聊天的选项中
标签: android android-intent callback whatsapp
我正在构建一个应用程序,它会要求用户将聊天从 WhatsApp 导出到我的应用程序中。 如何在“通过..发送聊天”意图窗口中显示我的应用?
【问题讨论】:
标签: android android-intent callback whatsapp
这样做的正确方法是添加以下意图过滤器:
<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>
然后您可以使用以下命令阅读聊天内容:
Uri uri = intent.getClipData().getItemAt(i).getUri();
InputStream inputstream = getContentResolver().openInputStream(uri);
byte[] data = new byte[1024];
int bytesRead = inputstream.read(data);
while (bytesRead != -1) {
chatContent.append(new String(data));
bytesRead = inputstream.read(data);
}
// TODO - Here we can do whatever we want with the chat content chatContent.toString()
if (mainTextView != null){
mainTextView.setText(chatContent.toString());
}
【讨论】:
阅读聊天内容是这样的完整:
Intent intent = getIntent();
String type=intent.getType();
String action=intent.getAction();
StringBuffer chatContent=new StringBuffer();
// Figure out what to do based on the intent type
if(intent.ACTION_SEND_MULTIPLE.equals(action) && type!=null){
Bundle bundle=intent.getExtras();
try {
for(int i=0;i<intent.getClipData().getItemCount();i++){
Uri uri = intent.getClipData().getItemAt(i).getUri();
InputStream inputstream = getContentResolver().openInputStream(uri);
byte[] data = new byte[1024];
int bytesRead = inputstream.read(data);
while (bytesRead != -1) {
chatContent.append(new String(data));
bytesRead = inputstream.read(data);
}
}
//aqui se hace lo que se quiera con el chat "chatContent"
System.out.println(chatContent.toString());
System.out.println(bundle.getString(Intent.EXTRA_TEXT).replaceAll("El historial del chat se adjuntó a este correo como \"Chat de WhatsApp con ","").replaceAll("\".",""));
}catch (Exception e){
e.printStackTrace();
}
}
【讨论】: