Qt Android通知,无法设置图片

时间:2015-04-24 09:34:53

标签: java android c++ qt

我正在使用Java库为Qt制作Android测试应用程序。在Qt Notifier示例之后我尝试为初学者重新创建相同的通知但由于某种原因这行不起作用:

m_builder.setSmallIcon(R.drawable.icon);

它说:

java:77: error: error: package R does not exist

我尝试过添加:

import java.lang.Object;
import android.R.drawable;

我也尝试过:

m_builder.setSmallIcon(android.R.drawable.icon);

但这给了我错误:

java:77: error: error: cannot find symbol

所以我检查了Qt Notifier应用程序,我不认为我犯了任何错误,但由于某种原因它不起作用。

我的问题是:如何正确设置此图标?

以下是完整的代码:

package org.qtproject.qt5.example;

import android.app.Notification;
import android.app.NotificationManager;
import android.content.Context;
import java.lang.Object;
import java.lang.Throwable;
import java.io.Writer;
import java.io.StringWriter;
import java.io.PrintWriter;

import android.R.drawable;


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;

    public NotificationClient()
    {
        try {
            m_instance = this;
        } catch(Throwable t) {
            t.printStackTrace();
        }
    }

    public static void notify(String s)
    {
        try {
            if (m_notificationManager == null) {
                m_notificationManager = (NotificationManager)m_instance.getSystemService(Context.NOTIFICATION_SERVICE);
                m_builder = new Notification.Builder(m_instance);
                m_builder.setContentTitle("A message from Qt!");
                //m_builder.setSmallIcon(android.R.drawable.icon);
            }

            m_builder.setContentText(s);
            m_notificationManager.notify(1, m_builder.build());

        } catch(Throwable e) {
            e.printStackTrace();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

对我来说问题是因为AndroidManifest.xml中的配置错误。

正确编辑AndroidManifest并清理和重建项目后,问题就解决了。

答案 1 :(得分:1)

要修复此错误,请确保java类和AndroidManifest.xml中的包名称相同。

NotificationClient.java:

package com.mypackage;
...

的AndroidManifest.xml:

<manifest package="com.mypackage"...
...