问题描述
我为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应用程序,单击通知栏时打开应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!