小编MON*_*ONK的帖子

FCM 后台通知深层链接不适用于 Android

我尝试设置 FCM 通知以使用深层链接。如果应用程序位于前台,那么我们可以通过使用来处理通知FirebaseMessaginService,然后一切正常。当应用程序被终止并且 Firebase 的后台服务显示通知时,问题就出现了。我就是找不到一种方法让深层链接开箱即用。当前的解决方案是将深层链接放在 extras 中,并在应用程序启动时检查意图。但最好跳过这个并让通知传播正确的深层链接。

这是活动清单。深层链接的上升时间为<nav-graph .... />

        <activity
        android:name="com.*****.******.view.main.MainActivity"
        android:exported="true"
        android:launchMode="singleTask"
        android:screenOrientation="portrait">
        <nav-graph android:value="@navigation/services_graph" />
        <nav-graph android:value="@navigation/infobox_graph" />
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.VIEW" />

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

    </activity>
Run Code Online (Sandbox Code Playgroud)

当然还有服务的设置

        <service
        android:name=".usecase.notifications.OscaPushService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
Run Code Online (Sandbox Code Playgroud)

这对于 FCM 设置来说应该足够了,对吧?(当然按键也设置好了)

现在我尝试使用此有效负载发送深层链接:

                "androidNotification":{
                "click_action": "example://infobox/"
            },
Run Code Online (Sandbox Code Playgroud)

然后点击通知什么也不会发生。ActivityTaskManager将打印以下消息,仅此而已:

I/ActivityTaskManager: START u0 {act=example://infobox/ flg=0x14000000 pkg=com.*****.*****.** (has extras)} from uid 10374 (replaced pkg with stars)
Run Code Online (Sandbox Code Playgroud)

这与使用 adb shell 命令启动深度链接不同。

adb shell am start -d …
Run Code Online (Sandbox Code Playgroud)

android android-notifications firebase-cloud-messaging

5
推荐指数
1
解决办法
1663
查看次数

Fragment中的ViewPager第二次无法正常工作

我正在使用FrameLayout来显示包含ViewPager的片段。有时我需要换另一个片段。一切正常,直到我想回到包含ViewPager的Fragment为止。

这是我正在使用的代码:

包含ViewPager的片段:

    override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    val view : View = inflater!!.inflate(R.layout.main_quotes, null)
    val vpQuotes = view.findViewById<CustomViewPager>(R.id.vpQuotes)

    val vpAdapter = ViewPagerAdapter(activity.supportFragmentManager)
    vpQuotes.adapter = vpAdapter

    val vpPageChangeListener : ViewPager.OnPageChangeListener = object : ViewPager.OnPageChangeListener {
        override fun onPageScrollStateChanged(state: Int) {
        }

        override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
        }

        override fun onPageSelected(position: Int) {
            (activity as ChangeLikeButton).changeLikeButton(vpAdapter.getQuoteItem(Shared.currentViewPager.currentItem))
        }

    }

    vpQuotes.swipeDirection = CustomViewPager.SwipeDirection.RIGHT
    vpQuotes.addOnPageChangeListener(vpPageChangeListener)
    vpQuotes.setPageTransformer(true, ViewPagerTransformer())
    vpQuotes.post { vpPageChangeListener.onPageSelected(0) }

    return view
}
Run Code Online (Sandbox Code Playgroud)

ViewPagerAdapter: …

android android-fragments android-viewpager kotlin

2
推荐指数
2
解决办法
836
查看次数