简体   繁体   English

Firebase通知单击操作活动父活动

[英]Firebase notification click action activity parent activity

I'm making an app that uses Firebase notifications and everything Works fine except the fact when user clicks on the notification, I want to open an activity and when the user clicks the back button, I want to return to main activity, but now app only closes when user clicks in back button. 我正在制作一个使用Firebase通知的应用程序,并且一切正常,除了用户单击通知时,我想打开一个活动,以及当用户单击“后退”按钮时,我想返回主活动,但现在是app仅在用户单击“后退”按钮时关闭。

Here is my manifest code: 这是我的清单代码:

    <?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>

and my php script that send notification: 和我的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 );

?>

Thanks. 谢谢。

You can try something like this in the Activity you are opening via notification: 您可以在通过通知打开的Activity尝试以下操作:

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

You will check, if any Activity is in stack of the same task and if not, you will open MainActivity 您将检查是否有同一个任务的堆栈中有任何Activity ,如果没有,则将打开MainActivity

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM