0

我正在制作一个使用Firebase通知和一切的应用程序,除了事实上用户点击通知,我想打开一个活动以及当用户单击后退按钮时,想要返回主要活动,但现在应用仅在用户点击后退按钮时关闭。Firebase通知单击操作活动父活动

这里是我的清单代码:

<?xml version="1.0" encoding="utf-8"?> 

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 

    package="com.example.massa.luxvilla"> 



    <uses-permission android:name="android.permission.INTERNET" /> 

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

    <uses-permission android:name="android.permission.VIBRATE" /> 



    <application 

     android:allowBackup="true" 

     android:icon="@mipmap/ic_launcher" 

     android:label="@string/app_name" 

     android:supportsRtl="true" 

     android:theme="@style/AppTheme" 

     android:name=".LuxVilla"> 

     <meta-data 

      android:name="android.app.default_searchable" 

      android:value="com.example.massa.luxvilla.searchableactivity" /> 



     <provider 

      android:name=".sugestoes.SearchSugestionsProvider" 

      android:authorities="com.example.massa.luxvilla.sugestoes.SearchSugestionsProvider" /> 



     <activity android:name=".MainActivity" 

      android:theme="@style/Main"> 

      <intent-filter> 

       <action android:name="android.intent.action.MAIN" /> 



       <category android:name="android.intent.category.LAUNCHER" /> 

      </intent-filter> 

     </activity> 

     <activity android:name=".searchableactivity"> 

      <intent-filter> 

       <action android:name="android.intent.action.SEARCH" /> 

      </intent-filter> 



      <meta-data 

       android:name="android.app.searchable" 

       android:resource="@xml/searchable" /> 

     </activity> 

     <activity 

      android:name=".Actividades.casaactivity" 

      android:parentActivityName="com.example.massa.luxvilla.MainActivity" 

      android:theme="@style/Infocasa"> 

      <intent-filter> 

       <action android:name="casaactivity" /> 

       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 



      <meta-data 

       android:name="android.support.PARENT_ACTIVITY" 

       android:value="com.example.massa.luxvilla.MainActivity"/> 

     </activity> 



     <activity android:name=".Actividades.SettingsActivity"></activity> 



     <service 



      android:name=".notificacoes.FirebaseMessagingService"> 



      <intent-filter> 



       <action android:name="com.google.firebase.MESSAGING_EVENT"/> 



      </intent-filter> 



     </service> 



     <service 



      android:name=".notificacoes.FirebaseInstanceIDService"> 



      <intent-filter> 



       <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 



      </intent-filter> 



     </service> 



     <meta-data 

      android:name="com.google.firebase.messaging.default_notification_color" 

      android:resource="@color/colorAccent" /> 

    </application> 



</manifest> 

和我的PHP脚本,发送通知:

<?php 

#API access key from Google API's Console 

    define('API_ACCESS_KEY', 'API_KEY'); 

    $topic = "/topics/todos"; 

$url = 'https://fcm.googleapis.com/fcm/send'; 
$fields = array (
     'to' => $topic, 
     'notification' => array (
       "body" => "nova casa adicionada", 
       "title" => "Nova casa", 
       "sound"=> "default", 
       "click_action"=> "casaactivity" 
     ), 
     'data' => array(
      "localcasa" => "local", 
      "precocasa"=> "Preço", 
      "imgurl"=> "link imagem", 
      "infocs"=> "info", 
      "csid"=> "id da casa" 
     ) 
); 
$fields = json_encode ($fields); 
$headers = array (
     'Authorization: key=' . API_ACCESS_KEY, 
     'Content-Type: application/json' 
); 

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_POST, true); 
curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $fields); 

$result = curl_exec ($ch); 
curl_close ($ch); 

?> 

感谢。

+0

的是你要打开的活动的名称? – Manza

+0

我想在待处理意图中执行父堆栈的相同操作,打开casaactivity,并且当用户单击后退按钮返回主活动 –

回答

0

你可以尝试这样的事情在Activity您通过通知开口:

@Override 
public void onBackPressed() { 
    if (isTaskRoot()) { 
     finish(); 
     startActivity(new Intent(this, MainActivity.class)); 
    } else { 
     super.onBackPressed(); 
    } 
} 

你会检查,如果有Activity是在同一个任务的堆栈,如果没有,你会打开MainActivity

+0

谢谢我没有时间测试您的答案,因为我有时间测试并查看结果。 –