我正在玩可穿戴设备,我已经从我的微应用程序(在可穿戴设备上运行)with some little restrictions创建了通知,我想知道如何创建待处理的意图在手机上打开主应用程序。
答案 0 :(得分:5)
我不知道是否还有其他办法。
然而它可以工作。
您在磨损模块中构建通知,即可在磨损中启动广播。
广播(在磨损上运行)使用 Message.API 向移动模块发送消息。
在移动模块上有一个 WearableListenerService
,可在移动设备上启动MainActivity。
在穿着中构建通知:
// Notification
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
//.setContentTitle(mNotificationUtil.getTitle())
.setContentText("Text")
.setContentIntent(getPendingIntent(this));
// Get an instance of the NotificationManager service
NotificationManagerCompat notificationManager =
NotificationManagerCompat.from(this);
// Build the notification and issues it with notification manager.
notificationManager.notify(1, notificationBuilder.build());
}
private PendingIntent getPendingIntent(MainActivity mainActivity) {
final String INTENT_ACTION = "it.gmariotti.receiver.intent.action.TEST";
Intent intent = new Intent();
intent.setAction(INTENT_ACTION);
PendingIntent pendingIntent =
PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
return pendingIntent;
}
此通知启动广播消息。 在你的wear / AndroidManifest.xml
中声明这个广播<强>穿/ AndroidManifes.xml 强>
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<receiver android:name=".MyBroadcast">
<intent-filter>
<action android:name="it.gmariotti.receiver.intent.action.TEST"/>
</intent-filter>
</receiver>
然后实施广播以发送消息:
public class MyBroadcast extends BroadcastReceiver implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
Node mNode; // the connected device to send the message to
GoogleApiClient mGoogleApiClient;
private static final String WEAR_PATH = "/hello-world-wear";
@Override
public void onReceive(Context context, Intent intent) {
//Connect the GoogleApiClient
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mGoogleApiClient.connect();
}
/**
* Send message to mobile handheld
*/
private void sendMessage() {
if (mNode != null && mGoogleApiClient!=null && mGoogleApiClient.isConnected()) {
Wearable.MessageApi.sendMessage(
mGoogleApiClient, mNode.getId(), WEAR_PATH, null).setResultCallback(
new ResultCallback<MessageApi.SendMessageResult>() {
@Override
public void onResult(MessageApi.SendMessageResult sendMessageResult) {
if (!sendMessageResult.getStatus().isSuccess()) {
Log.e("TAG", "Failed to send message with status code: "
+ sendMessageResult.getStatus().getStatusCode());
}
}
}
);
}else{
//Improve your code
}
}
/*
* Resolve the node = the connected device to send the message to
*/
private void resolveNode() {
Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>() {
@Override
public void onResult(NodeApi.GetConnectedNodesResult nodes) {
for (Node node : nodes.getNodes()) {
mNode = node;
}
sendMessage();
}
});
}
@Override
public void onConnected(Bundle bundle) {
resolveNode();
}
@Override
public void onConnectionSuspended(int i) {
//Improve your code
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
//Improve your code
}
}
此代码会向您的手机发送消息。 它需要在 wear / build.gradle
中dependencies {
compile "com.google.android.support:wearable:1.0.+"
compile 'com.google.android.gms:play-services-wearable:+'
}
在**移动模块上,您必须实施WearableListenerService
**
/**
* @author Gabriele Mariotti (gabri.mariotti@gmail.com)
*/
public class ListenerServiceFromWear extends WearableListenerService {
private static final String WEAR_PATH = "/hello-world-wear";
@Override
public void onMessageReceived(MessageEvent messageEvent) {
/*
* Receive the message from wear
*/
if (messageEvent.getPath().equals(WEAR_PATH)) {
Intent startIntent = new Intent(this, MainActivity.class);
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startIntent);
}
}
}
您需要在 Mobile / AndroidManifest.xml 中声明服务。
<service android:name=".ListenerServiceFromWear">
<intent-filter>
<action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
</intent-filter>
</service>
以及 mobile / build.gradle 依赖关系:
dependencies {
wearApp project(':wear')
compile 'com.google.android.gms:play-services-wearable:+'
}
答案 1 :(得分:3)
我刚刚测试过的解决方案,它可以在Android应用程序上添加一个消息监听器,只需从可穿戴设备发送我想要它的详细信息。
public class WearMessagesAPI_Service
extends WearableListenerService {
private static final String OPEN_APP_PATH = "/OpenApp";
@Override
public void onMessageReceived(MessageEvent event) {
Log.w("WearMessagesAPI_Service", event.getPath());
String activityKey = new String(event.getData());
if(activityKey.equals(...)) {
Intent myAppIntent = ... create intent ...
startActivity(myAppIntent);
}
}
}
不要忘记将它添加到您的清单中:
<service android:name=".wearable.WearMessagesAPI_Service">
<intent-filter>
<action android:name="com.google.android.gms.wearable.BIND_LISTENER"/>
</intent-filter>
</service>
我相信就是这样。 让我知道它是怎么回事:))