是否可以在不打开应用程序的情况下发送whatsApp消息,在后台发送,就像使用以下方式发送短信:
smsManager.sendTextMessage("+12546304580", null, "Test Message", null, null);
如果是,怎么做?我尝试的代码打开了应用程序(意图):
Intent waIntent = new Intent(Intent.ACTION_SEND);
waIntent.setType("text/plain");
String text = "Test Message";
waIntent.setPackage("com.whatsapp");
waIntent.putExtra(Intent.EXTRA_TEXT, text);//
startActivity(Intent.createChooser(waIntent, "Share with"));
或者是否可以打开应用程序,发送消息到给定的地址,然后关闭它?
谢谢!
不,这是不可能的,因为Whatsapp不提供内容提供商,将来也不会提供。
基于Jabber的协议可以重新分解和实现。
您将需要处理握手等。
您将需要一个AccessIbility服务来捕获给定包上的所有传入事件。此处示例:
public static final String FACEBOOK_PACKAGE_NAME = "com.facebook.orca";
public class DefaultAccessibility extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
final int eventType = event.getEventType();
try {
if (Build.VERSION.SDK_INT >= 16) {
switch (eventType) {
case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:
Notification notification = (Notification) event.getParcelableData();
if (event.getPackageName().equals(WHATSAPP_PACKAGE_NAME)) {
RemoteViews views = notification.bigContentView;
Class<?> secretClass = views.getClass();
ArrayList<String> raw = new ArrayList<String>();
Field outerFields[] = secretClass.getDeclaredFields();
for (Field outerField : outerFields) {
if (outerField.getName().equals("mActions")) {
outerField.setAccessible(true);
ArrayList<Object> actions = null;
try {
actions = (ArrayList<Object>) outerField.get(views);
for (Object action : actions) {
Field innerFields[] = action.getClass()getDeclaredFields();
Object value = null;
Integer type = null;
for (Field field : innerFields) {
try {
field.setAccessible(true);
if (field.getName().equals("type")) {
type = field.getInt(action);
} else if (field.getName().equals("value")) {
value = field.get(action);
}
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
}
}
if (type != null && type == 10 && value != null) {
raw.add(value.toString());
}
}
} catch (IllegalArgumentException e1) {
} catch (IllegalAccessException e1) {
}
}
parseWhatsappRawMessages(raw);
}
}
}
和解析方法。
private void parseWhatsappRawMessages(ArrayList<String> raw) {
int count = raw.size();
if (count > 2) {
Log.d(TAG, "RAW TITLE: " + raw.get(0));
Log.d(TAG, "RAW MESSAGE: " + raw.get(1));
}
}
现在,您可以对原始消息进行解析,以获得消息,并执行您想要的任何操作。
<service
android:name="com.app.DefaultAccessibility"
android:enabled="true"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService"></action>
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/accessibilityservice"/>
</service>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFeedbackType="feedbackAllMask"
android:notificationTimeout="100"
android:description="@string/accessibility_service_description" />
并且不要忘记让用户激活它。您可以通过调用
Intent intent = new Intent(android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS);
startActivityForResult(intent, 1337);
我们如何才能从android应用直接发送一个图像到whatsapp?我试着用 以上代码打开WhatsApp的发送窗口。有没有其他的方法,让图片将直接发送而不打开什么app窗口?
我有一个监控服务,它在应用程序启动、应用程序关闭和每分钟(滴答)向RabbitMQ发送消息。 启动和勾选事件工作正常。最初编写类时,关闭事件也起作用。 我正在使用spring-boot-starter-amqp 1.3.3。释放 该事件是在DisposableBean接口的destroy方法上触发的。 我也尝试过实现
我想向我的whatsapp收件人发送whatsapp消息,但whatsapp收件人需要通过向您在沙盒中选择的电话号码发送“加入[关键字]”whatsapp消息来选择加入 我想发送消息而不需要发送“加入[关键字]”WhatsApp消息
我正在开发一个NativeScript Android应用程序,其中我希望用户能够在按下一个按钮后打开WhatsApp联系人(只知道电话号码)。我目前使用Nativescript-open-app打开WhatsApp。是否也可以打开对话? 要打开WhatsApp,我使用以下代码(也许可以修改“com.WhatsApp”?):
接口说明 轻推轻应用/订阅号支持发送文本、图片、文本卡片、图文、key-value、文件、待办等消息类型。本接口针对各种消息类型和发送的对象(单发、群发以及给部分人发送)进行了定义。 注:openid是用户关注某个轻应用/订阅号后生成的唯一id,单发和给部分人发送消息必须携带此参数,可以通过如下接口来获取: 根据qt_code获取用户基本信息 获取使用者列表 通过userId获取openid 消息
主动发送消息 use EasyWeChat\Kernel\Messages\TextCard; // 获取 Messenger 实例 $messenger = $app->messenger; // 准备消息 $message = new TextCard([ 'title' => '你的请假单审批通过', 'description' => '单号:1928373, ...