Android 未接收到从BroadcastReceiver到WearableListerService的消息
我正在尝试从我的移动应用程序向可穿戴应用程序中的服务发送消息。 消息需要从广播接收器发送。在BroadcastReceiver中,消息被成功发送,至少日志中是这样说的,但是没有触发方法onMessageReceive。 我不太确定可能是什么问题,我在两个build.gradle文件中都有相同的applicationId,但包名称不同。 在移动清单中,接收方具有以下声明:Android 未接收到从BroadcastReceiver到WearableListerService的消息,android,service,broadcastreceiver,wear-os,receiver,Android,Service,Broadcastreceiver,Wear Os,Receiver,我正在尝试从我的移动应用程序向可穿戴应用程序中的服务发送消息。 消息需要从广播接收器发送。在BroadcastReceiver中,消息被成功发送,至少日志中是这样说的,但是没有触发方法onMessageReceive。 我不太确定可能是什么问题,我在两个build.gradle文件中都有相同的applicationId,但包名称不同。 在移动清单中,接收方具有以下声明: <receiver android:name="com.app.mobile.NewAlarm"
<receiver android:name="com.app.mobile.NewAlarm"
android:exported="false">
<intent-filter>
<action android:name="com.example.android.support.wearable.notifications.ACTION_EXAMPLE" />
</intent-filter>
</receiver>
您试图在连接客户端之前发送消息,因此
getConnectedNodeResult.getNodes()
返回一个空列表
请尝试以下方法:
public void onReceive(Context context, Intent paramIntent) {
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addApi(Wearable.API)
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(Bundle bundle) {
sendMessage();
}
@Override
public void onConnectionSuspended(int cause) {
}
}).build();
mGoogleApiClient.connect();
}
是的,为我工作:)。非常感谢。但只是一个小问题,它会在我将wear连接到手机时调用OnConnect方法吗,还是只在触发onReceive方法时才调用?每次调用
mgoogleapClient.connect()时都会发生代码>。这是当你连接到GoogleAppClient时,而不是手表。
<service android:name=".DataLayerListenerService" >
<intent-filter>
<action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
</intent-filter>
</service>
public class DataLayerListenerService extends WearableListenerService {
public static final String START_ACTIVITY_PATH = "/notice";
public static final String TAP_ACTION_PATH = "/tap";
private static final String TAG = "DataLayerListenerService";
@Override
public void onMessageReceived(MessageEvent messageEvent) {
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
Log.d(TAG, "Message Received !!");
if (START_ACTIVITY_PATH.equals(messageEvent.getPath())) {
Log.d(TAG, "Message Received !!");
int vibeTime = 5000;
String strVibeTime = new String(messageEvent.getData());
if (!strVibeTime.equals("") && !strVibeTime.equals("0")) {
vibeTime = (Integer.parseInt(strVibeTime)) * 1000;
}
sleep(1000);
vibrator.vibrate(vibeTime);
} else if (TAP_ACTION_PATH.equals(messageEvent.getPath())) {
Log.d(TAG, "Tapping Received !!");
vibrator.cancel();
}
}
public synchronized void sleep(long msec) {
try
{
wait(msec);
}catch(InterruptedException e){
Log.e(TAG, e.getMessage());
}
}
}
public void onReceive(Context context, Intent paramIntent) {
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addApi(Wearable.API)
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(Bundle bundle) {
sendMessage();
}
@Override
public void onConnectionSuspended(int cause) {
}
}).build();
mGoogleApiClient.connect();
}