如何在适用于 Android 和 cordova 的项目中单击通知时显示特定页面?
Posted
技术标签:
【中文标题】如何在适用于 Android 和 cordova 的项目中单击通知时显示特定页面?【英文标题】:How to show a specific page on clicking a notification in a project that works with Android and cordova? 【发布时间】:2014-02-25 11:43:29 【问题描述】:我在我的项目中使用 cordova 3.3.1。
我打算在 android 设备的状态栏通知中显示我的通知。为了实现这一点,我在 GCMIntentService 类中操作了 createNotification() 函数,现在我收到了通知。
现在我将在单击通知时显示特定页面(这取决于通知类型)。您对此有任何想法,我不知道如何实现这部分? 我只知道如果我修改扩展 CordovaActivity 的 java 类,那么无论何时 我运行“cordova build”命令,我会丢失所有代码,因为这个类将由 科尔多瓦。这是我的代码:
--------------in my class GCMIntentService---------------------------
public void createNotification(Context context, Bundle extras)
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
String appName = getAppName(this);
Intent notificationIntent = new Intent(this, G3Tracker.class);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
notificationIntent.putExtra("pushBundle", extras);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setDefaults(Notification.DEFAULT_ALL)
.setSmallIcon(context.getApplicationInfo().icon)
.setWhen(System.currentTimeMillis())
.setContentTitle(extras.getString("title"))
.setTicker(extras.getString("title"))
.setContentIntent(contentIntent);
String message = extras.getString("message");
if (message != null)
mBuilder.setContentText("You recieved a new notification: " + message);
else
mBuilder.setContentText("message");
-----------------------------------------------------
public class G3Tracker extends CordovaActivity
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
super.init();
// Set by <content src="index.html" /> in config.xml
super.loadUrl(Config.getStartUrl());
//super.loadUrl("file:///android_asset/www/index.html")
【问题讨论】:
【参考方案1】:NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notif = new Notification(com.project.R.drawable.app_icon, "heading title", System.currentTimeMillis());
CharSequence from = "application name";
CharSequence message = "message which you want to show";
intent = new Intent(MyActivity.this,ShowActivity.class);
intent.putExtra("NotifID", notifID);
pendingIntent= PendingIntent.getActivity(MyActivity.this, notifID, intent, PendingIntent.FLAG_UPDATE_CURRENT| PendingIntent.FLAG_ONE_SHOT);
notif.setLatestEventInfo(this, from, message, intent);
notif.flags |= Notification.FLAG_AUTO_CANCEL;
notif.vibrate = new long[] 100, 250, 100, 500 ;
nm.notify(notifID, notif);
finish();
试试这个对我有用的代码,如果您有任何疑问,请回复我。
【讨论】:
感谢您的回复,但是您在哪里定义您的目的地? intent = new Intent(MyActivity.this,ShowActivity.class);以上是关于如何在适用于 Android 和 cordova 的项目中单击通知时显示特定页面?的主要内容,如果未能解决你的问题,请参考以下文章
Cordova:适用于 Android 的 Facebook 插件构建错误
如何将适用于 Android 的 Pushwoosh 插件添加到 Cordova IBM Worklight (@Eclipse)?
适用于 android 的 Cordova '本机文件选择器'插件不起作用
Cordova 相机插件适用于模拟器,而不适用于 Android 设备