我是android的新手(更不用说安卓了),我的表盘点击处理程序中有这样的东西:
Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
builder.appendPath("time");
ContentUris.appendId(builder, startMillis);
Intent intent = new Intent(Intent.ACTION_VIEW)
.setData(builder.build())
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
点击后,我得到没有应用程序可以处理此操作消息。
当然,议程应用程序就在那里,我已经安装了一些其他日历应用程序(例如google)。
答案 0 :(得分:2)
听起来这些应用程序的Wear组件不支持标准日历Intent
,就像他们的手持设备组件(可能)一样。很可能开发人员还没有充分考虑到其他人(比如你自己)想要在手表上做这件事。
您可以使用adb从手表中拉出相应的APK,然后在其上运行apktool以提取人类可读的清单,从而对此进行检查。查看它们包含的<intent>
元素应该告诉您两者:
CalendarContract
,那么在您调用它时会出现问题。Intent
。答案 1 :(得分:1)
String's answer绝对是更正确的做法。但是,在Moto360上,我查看了启动Agenda应用程序时正在启动的活动。从那开始我就设法得到了代码:
ComponentName component = new ComponentName("com.google.android.wearable.app", "com.google.android.clockwork.home.calendar.AgendaActivity");
Intent intent = new Intent()
.setComponent(component)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
努力实现你的目标。
警告:以这种方式启动任何应用实际上是在寻找麻烦。请注意,其他应用程序可以更改程序包名称,可以重命名活动等,这些都会破坏启动活动的方式。但是,如果没有通过通用Intent
启动所需应用程序的好方法,这可能是一种方法。
答案 2 :(得分:1)
I followed String's suggestion and managed to get it working by calling:
Intent calendarIntent = new Intent();
calendarIntent.setAction(Intent.ACTION_MAIN);
calendarIntent.addCategory(Intent.CATEGORY_APP_CALENDAR);
startActivity(calendarIntent);