QT/QML Android应用程序,单击通知栏时打开应用程序

编程入门 行业动态 更新时间:2024-10-25 16:22:18
本文介绍了QT/QML Android应用程序,单击通知栏时打开应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我为Android应用程序进行了QT.当我单击按钮时,通知栏会在平板电脑上看到.但是,如果单击通知",则我的应用程序会以黑色窗口打开/聚焦(不知道).简单地做到这一点.我的代码是:

I make an QT for Android apps. When I click button notify bar seen above in tablet. But if click notify, my apps open/focus(don' know) with black window. How to do it simply. My code is:

package org.ays.operation; import android.app.Notification; import android.app.NotificationManager; import android.content.Context; import android.app.PendingIntent; import android.content.Intent; public class NotificationClient extends org.qtproject.qt5.android.bindings.QtActivity { private static NotificationManager m_notificationManager; private static Notification.Builder m_builder; private static NotificationClient m_instance; private static PendingIntent contentIntent; private static Intent intent; public NotificationClient() { m_instance = this; } public static void notify2() { intent = new Intent(m_instance, NotificationClient.class); contentIntent = PendingIntent.getActivity(m_instance, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); if (m_notificationManager == null) { m_notificationManager = (NotificationManager)m_instance.getSystemService(Context.NOTIFICATION_SERVICE); m_builder = new Notification.Builder(m_instance); m_builder.setSmallIcon(R.drawable.icon); m_builder.setContentTitle("A message from Qt!"); m_builder.setDefaults(Notification.DEFAULT_SOUND); m_builder.setContentIntent(contentIntent); m_builder.setAutoCancel(true); } m_builder.setContentText("Bla Bla"); m_notificationManager.notify(1, m_builder.build()); } }

我是客人,重要的代码是PendingIntent,用于打开/聚焦主应用程序.另一种情况是我不想将notify2用作静态.我可以从Qt/JNI动态使用它吗?

I guest, important code is PendingIntent to open/focus main app. Other case is I don't want to use notify2 as static. Can I use it dynamic from Qt/JNI

推荐答案

第一种方式:

您必须更改此行

intent = new Intent(m_instance, NotificationClient.class);

Intent intent = new Intent(mActivityInstance, mActivityInstance.getClass());

contentIntent = PendingIntent.getActivity(m_instance, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

contentIntent = PendingIntent.getActivity(mActivityInstance, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

注意mActivityInstance是您的mainActivity.

attention mActivityInstance is your mainActivity.

我通过c ++并使用JNI设置了mActivityInstance,如下所示:

I set my mActivityInstance from c++ and with JNI like below:

const QAndroidJniObject m_JavaNotification("com/falsinsoft/qtandroidtools/AndroidNotification", "(Landroid/app/Activity)V", QtAndroid::androidActivity().object<jobject>());

和我的AndroidNotification.java中:

and in my AndroidNotification.java:

public class AndroidNotification { private final Activity mActivityInstance; public AndroidNotification(Activity ActivityInstance) { mActivityInstance = ActivityInstance; } }

第二种方式(我不确定这可以解决您的问题!): 在您的manifiset.xml中更改此行:

second way(I dont sure this solve your problem!): change this line in you manifiset.xml:

<application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="YourProjectName" android:icon="@drawable/icon">

收件人:

<application android:hardwareAccelerated="true" android:name="your java class extend from QtActivity" android:label="YourProjectName" android:icon="@drawable/icon">

更多推荐

QT/QML Android应用程序,单击通知栏时打开应用程序

本文发布于:2023-11-27 03:27:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1636381.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:应用程序   单击   通知   QT   QML

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!