通知在某些设备上无法正常运行

时间:2014-07-15 14:34:29

标签: android android-intent

在我的应用程序中,当我的应用程序在后台时,我使用服务进行后台工作(将数据发送到服务器)。所以我创建了一个通知,告诉用户应用程序正在后台运行。我希望当用户点击通知我的应用程序来到前台所以我使用这样的Intent,Android用来启动我的应用程序

   NotificationCompat.Builder mBuilder =
   new NotificationCompat.Builder(this)
   .setSmallIcon(R.drawable.final_driver_notification_icon)
   .setContentTitle("...")
   .setContentText("...");

    final Intent notintent = new Intent(getApplicationContext(),EntryScreen.class);

    notintent.setAction(Intent.ACTION_MAIN);

    notintent.addCategory(Intent.CATEGORY_LAUNCHER);

    PendingIntent pendint = PendingIntent.getActivity(this, 0, notintent, 0);

    mBuilder.setContentIntent(pendint);

    int notID = 001;


    startForeground(notID, mBuilder.build());

在模拟器中,一些物理设备工作正常。但在其他一些设备中,它从一开始就启动应用程序(它将Entry屏幕放在顶部)。 知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

您应该使用startForeground()启动服务。这是在前台启动服务并通过通知报告的方法。 Android - implementing startForeground for a service?

或尝试这样的事情:

public void initForeground() {
        Intent intentForeground = new Intent(this, Activity.class);
        intentForeground.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intentForeground,0);
        pendingIntent.cancel();
        pendingIntent = PendingIntent.getActivity(this, 0, intentForeground,0);          

        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext())
                .setSmallIcon(R.drawable.icon)
                .setContentIntent(pendingIntent)
                .setContentTitle(getString(R.string.app_name))
                .setContentText(getString(R.string.something))
                .setTicker(getString(R.string.something))
                .setAutoCancel(false);    

        Notification notification = mBuilder.build();

        startForeground(myID, notification);
    }

希望它可以帮到你!