当应用程序处于后台时,如何从通知中打开特定屏幕?

问题描述 投票:0回答:1

我正在尝试打开特定屏幕,该屏幕的启动取决于通知。 我收到通知,但打不开屏幕,请帮我找出解决方案。

    public static void sendChatNotification(Context context, String title, String messageBody, int notificaionId) {
        Intent intent = new Intent(context, ChattingActivity.class);
        intent.putExtra("isFromNotification",true);
        intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_RECEIVER_FOREGROUND);
         PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_ONE_SHOT);
       Uri defaultSoundUri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE
        + "://" + context.getPackageName() + "/raw/incoming");
           Bitmap largeIcon = BitmapFactory.decodeResource(context.getResources(),
    R.mipmap.ic_launcher);
      NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, notificationChannelIdChat)
        .setSmallIcon(R.drawable.vector_app_logo_notification_status_bar)
        .setLargeIcon(largeIcon)
        .setContentTitle(title)
        .setStyle(new NotificationCompat.BigTextStyle()
                .bigText(messageBody))
        .setPriority(NotificationCompat.PRIORITY_MAX)
        .setVibrate(new long[]{1000, 1000})
        .setAutoCancel(true)
        .setTicker(context.getString(R.string.newMessageFrom))
        .setGroup("chat")
        .setGroupSummary(true)
        .setContentIntent(pendingIntent);
  }
android notifications chat splash-screen
1个回答
-1
投票
  • 在Android应用程序中正确设置通知任务。
  • 向您有应用程序打开屏幕的设备发送通知。
  • 打开代码。并在启动屏幕中写入命令。

Splashscreen.java -> onCreate()

       @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
       
        onNewIntent(getIntent());          //  onNewIntent  is the Main line.
       }
  • 退出 onCreate() 方法后,按 Alt + Insert 按钮覆盖 newIntent() 方法。

  • newIntent()方法

    中编写代码
        @Override
        protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        if(intent.hasExtra("action")){
        if (intent.getStringExtra("action").equals("112")){
             Intent intent1 = new Intent(this, MainActivity.class);  // opening in **Main Activity** to *redirect* in **Chat Screen**
             intent1.putExtra("action","112");   //  here "112" is the chat notification action.
             startActivity(intent1);
           }
          }
        }
    
  • 打开 MainActivity.java -> onCreate()
  • 如果意图有可用数据,则编写代码以找出其动作的意图。

         protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);
            // check if intent have action in data.
            if(getIntent().hasExtra("action")){  
    
            // check if data available then action == 112 is available or not.
            if(getIntent().getStringExtra("action").equals("112")){   
    
            // opening ChattingActivity.java if all scenario is not nullable.
            startActivity(new Intent(this,ChattingActivity.class));  
          }
         }
    
© www.soinside.com 2019 - 2024. All rights reserved.