我正在制作一个Android应用程序插件。我试图使其尽可能通用,这对我来说是一个问题。我正在设计插件,以便我制作的任何未来应用都可以轻松实现插件。我拥有的问题是插件包含一项服务,该服务会定期通过通知提醒用户。当用户打开通知栏并触摸通知时,需要打开最初启动服务的活动。如何确定哪个活动启动了一项服务?
该服务使用此代码开始:
startService(new Intent(this, myService.class));
以及服务启动使用此代码通知:
Intent notificationIntent = new Intent(this, myClass.class);
目前,myClass.class
是硬编码到通知。这意味着无论我制作多少个不同的应用程序,如果使用此插件,我必须始终命名启动服务“myClass”的类。
我想要一种通用的方式来获得启动服务的原始活动。
那么,如何把一个类的演员?我知道如何做字符串,整数等等,但是没有选择通过一个类作为额外的选项。 – 2012-03-22 14:56:11
@LucasBailey:一堂课对你来说毫无用处。您指出涉及多个应用程序,并且您的服务不能有其他项目的'Class'对象。最好的答案是让你通过一个额外的'PendingIntent'传递给'Notification',所以客户端活动可以做出关于标志等的决定,这可能对它很重要。一个'PendingIntent'是'Parcelable',所以它可以进入额外的'Intent'。 – CommonsWare 2012-03-22 15:00:54
这就是通知服务的工作原理。你必须告诉它当用户选择你的通知时启动哪个类,像这样... Intent notificationIntent = new Intent(this,someActivity.class);我会考虑传递一个未决的意图。不知道为什么我没有想到它。 – 2012-03-22 15:04:06