Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在一个使用Android和cordova的项目中,如何在单击通知时显示特定页面?_Javascript_Android_Push Notification_Cordova 3_Cordova Plugins - Fatal编程技术网

Javascript 在一个使用Android和cordova的项目中,如何在单击通知时显示特定页面?

Javascript 在一个使用Android和cordova的项目中,如何在单击通知时显示特定页面?,javascript,android,push-notification,cordova-3,cordova-plugins,Javascript,Android,Push Notification,Cordova 3,Cordova Plugins,我正在我的项目中使用cordova 3.3.1 我打算在android设备的状态栏通知中显示我的通知。为了实现这一点,我在gcminentservice类中操作了createNotification()函数,现在我收到了通知 现在,当我单击通知时,我将显示一个特定的页面(这取决于通知类型)。你知道吗,我不知道如何实现这一部分? 我只知道,如果我修改扩展CordovaActivity的java类,那么 我运行“cordova build”命令,我将丢失所有代码,因为该类将由 科尔多瓦。下面是我的代

我正在我的项目中使用cordova 3.3.1

我打算在android设备的状态栏通知中显示我的通知。为了实现这一点,我在gcminentservice类中操作了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")
   }
 }
--------------在我的类GCMinentService中---------------------------
public void createNotification(上下文上下文、Bundle extra)
{   
NotificationManager mNotificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION\u服务);
字符串appName=getAppName(此);
Intent notificationIntent=新的Intent(this,G3Tracker.class);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
notificationIntent.putExtra(“推包”,extras);
PendingEvent contentIntent=PendingEvent.getActivity(this,0,notificationIntent,PendingEvent.FLAG_UPDATE_CURRENT);
通知相容建筑商mBuilder=
新建NotificationCompat.Builder(上下文)
.setDefaults(通知.DEFAULT\u全部)
.setSmallIcon(context.getApplicationInfo().icon)
.setWhen(System.currentTimeMillis())
.setContentTitle(extras.getString(“标题”))
.setTicker(附加的getString(“标题”))
.setContentIntent(contentIntent);
字符串消息=extras.getString(“消息”);
如果(消息!=null){
setContentText(“您收到新通知:“+消息”);
}否则{
mBuilder.setContentText(“消息”);
}
----------------------------------------------------- 
公共类G3Tracker扩展了Cordova活动
{
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.init();
//在config.xml中设置
super.loadUrl(Config.getStartUrl());
//super.loadUrl(“file:///android_asset/www/index.html")
}
}

试试这段代码它对我有用,如果你有任何疑问,请回答我。

谢谢你的回答,但是你在哪里定义你的目的地?intent=新intent(MyActivity.this,ShowActivity.class);
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();