【发布时间】:2015-01-21 22:24:50
【问题描述】:
我想从移动应用向穿戴式应用发送消息,并在穿戴式应用收到消息后显示一些 UI 活动。
我已经准备好了一切,并且已经为此工作(移动应用正在使用 Wearable.MessageApi.sendMessage,而穿戴应用正在扩展 WearableListenerService)。但是我的问题是,当我运行穿戴应用程序时,用户界面会在启动时出现,我应该更改什么以便在穿戴应用程序收到来自移动设备的消息之前什么都不显示?如何防止在应用启动时创建 Activity?
清单:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.DeviceDefault" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".WearMessageListenerService">
<intent-filter>
<action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
</intent-filter>
</service>
</application>
活动:
public class MainActivity extends Activity {
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.i("WEAR", "onCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
@Override
public void onLayoutInflated(WatchViewStub stub) {
mTextView = (TextView) stub.findViewById(R.id.text);
}
});
}
}
服务:
public class WearMessageListenerService extends WearableListenerService {
private static final String START_ACTIVITY = "/start_activity";
@Override
public void onMessageReceived(MessageEvent messageEvent) {
Log.i("WEAR", "WearableListenerService:onMessageReceived");
if( messageEvent.getPath().equalsIgnoreCase( START_ACTIVITY ) ) {
Intent intent = new Intent( this, MainActivity.class );
intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
startActivity( intent );
} else {
super.onMessageReceived(messageEvent);
}
}
}
【问题讨论】:
-
啊,所以我更改了配置以取消单击启动默认活动,这可以解决问题。
标签: android android-activity android-service wear-os