使用通知在后台使用前端应用程序(模拟相同的主屏幕图标行为)

时间:2014-02-22 17:15:31

标签: android android-notifications

我知道还有其他类似的问题,我已经尝试过所有这些问题,但没有成功。这就是为什么我在这里发布我的代码,以防有人可以为我的案例想出正确的解决方案并在代码中建议一个特定的操作,请帮忙。

我尝试过:在intent调用的活动中向清单文件添加一些标记,在代码中为实际意图添加标记,操作和类别,创建一个虚拟活动,在intent中调用intent( )等等。

感谢您的任何建议。

NotificationCompat.Builder mBuilder =
         new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_launcher)
        .setContentTitle(getString(R.string.app_name))
        .setStyle(new NotificationCompat.BigTextStyle().bigText(getString(R.string.lampp)))
        .setAutoCancel(true)
        .setContentText(getString(R.string.lampp));

Intent resultIntent = new Intent(this, MainActivity.class);

TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);

PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build()); 

感谢@Merlevede和之前发布的帖子的结合,这就是它的解决方法:

将此代码用于通知:

NotificationCompat.Builder mBuilder =
         new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_launcher)
        .setContentTitle(getString(R.string.app_name))
        .setStyle(new NotificationCompat.BigTextStyle().bigText(getString(R.string.lampp)))
        .setAutoCancel(false)
        .setContentText(getString(R.string.lampp));

Intent resultIntent = new Intent(this, NotiActivity.class);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

PendingIntent resultPendingIntent = PendingIntent.getActivity(this,0,resultIntent,PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build()); 

这是在意图NotiActivity.class中调用的虚拟Activity的代码:

public class NotiActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    finish();

} 
  } 

希望这有助于那里的人。

1 个答案:

答案 0 :(得分:0)

我不知道这对你是否有用。您可能在通知意图上遗漏了一些标记,请特别注意FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOP

我使用此代码使用服务通知。

Intent notificationIntent = new Intent(this, ActivityMain.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentIntent(pendingIntent)

您的代码存在一些差异。此外,我正在使用服务中的此通知,因此我使用startForeground来设置通知。

值得一试。