【问题标题】:In Android How to show Notification From C library在 Android 中如何显示来自 C 库的通知
【发布时间】:2011-02-08 01:53:27
【问题描述】:

在中间件 C 库中完成一些工作后,需要向通知栏显示一些通知。请建议是否有任何解决方法来显示通知。这个 C 库没有 GUI 部分。

【问题讨论】:

    标签: android notifications middleware


    【解决方案1】:

    正如 Nitrex 所说,您需要通过 JNI 调用 Java 类中的方法:

    在 C 中:

    void
    Java_com_example_hellojni_HelloJni_doSomeInterestingJob( JNIEnv* env,
                                                             jobject thiz )
    {
        jclass cls = (*env)->GetObjectClass(env, thiz);
        jmethodID mid = (*env)->GetMethodID(env, cls, "callback", "()V");
        if (mid == 0)
            return;
        (*env)->CallVoidMethod(env, thiz, mid);
    }
    

    在你的“HelloJni”(请找一个更好的名字;-))类中,你可以调用:

    public void callback() {
        Log.d(TAG, "...");
        // Start notifications now.
    }
    

    【讨论】:

      【解决方案2】:

      您将不得不使用 Java 本机接口代码 (JNI) 从 C 代码中调用 java 方法。在线阅读 JNI,了解如何做到这一点。然后在java中,您可以将通知添加到通知栏。如果您不知道调用 java 方法,请在此处发表评论或发布新问题。

      【讨论】:

      • 忘了提到不应该更改框架代码。(要求)。使用 Service 可以完成一件事,但不知道该怎么做。
      • 如果您无法更改框架代码,那么您将如何显示通知?无论您将代码放在 C 中显示通知的位置,只需在那里调用一个显示通知的 java 方法即可。不确定使用服务...
      • 谢谢大家..我可以通过 JNI 来做。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      相关资源
      最近更新 更多