当我有例如自定义服务和自定义活动在同一个ADT项目中,然后我可以在服务中使用它来开始我的活动:
Intent i = new Intent(context, MyCustomActivity.class);
startActivity(i);
然而,当我在单独的项目中拥有服务和活动时,我不能这样做,因为我没有直接引用MyCustomActivity.class
。这是有问题的:我不希望包含JAR只是为了能够修复那个损坏的引用,因为我认为这将增加包大小并在设备上创建冗余数据(即活动代码在服务和活动包之间重复)。所以相反,我使用它(也许还有其他选择?):
Intent i = new Intent("com.mypackage.myStringActionName");
startActivity(i); //is this a broadcast?
OR
Intent i = new Intent("com.mypackage.myStringActionName");
sendBroadcast(i);
...但我真的不喜欢在我想要的时候发送广播是将意图指向一个活动来告诉它开始。
那么,还有什么方法可以避免重复(在ADT中)?或者更好的方式来发送直接意图?
答案 0 :(得分:1)
你可以试试这个:
Intent i = new Intent();
i.setComponent(new ComponentName(packageName, classname));
startActivity(i);
className必须包含packageName和主要活动名称