首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用PowerManager.WakeLock.newWakeLock调用QAndroidJniObject

无法使用PowerManager.WakeLock.newWakeLock调用QAndroidJniObject
EN

Stack Overflow用户
提问于 2015-12-07 10:33:33
回答 1查看 541关注 0票数 1

我正在尝试执行以下Java代码:

代码语言:javascript
复制
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();

使用Qt QAndroidJniObject (我正在Android上部署一个Qt应用程序)。

我做到了:

代码语言:javascript
复制
QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");
if ( activity.isValid() )
{
    QAndroidJniObject serviceName = QAndroidJniObject::getStaticObjectField<jstring>("android/content/Context","POWER_SERVICE");
    if ( serviceName.isValid() )
    {
        QAndroidJniObject powerMgr = activity.callObjectMethod("getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;",serviceName.object<jobject>());
        if ( powerMgr.isValid() )
        {
            jint levelAndFlags = QAndroidJniObject::getStaticField<jint>("android/os/PowerManager","SCREEN_DIM_WAKE_LOCK");

            QAndroidJniObject tag = QAndroidJniObject::fromString( "My Tag" );

            QAndroidJniObject wakeLock = powerMgr.callObjectMethod("newWakeLock", "(ILjava/lang/String;)Landroid/os/PowerManager/WakeLock;", levelAndFlags,tag.object<jstring>());

            if ( wakeLock.isValid() )
                wakeLock.callMethod<void>("acquire", "()V");
            else
                assert( false );
        }
    }
}

从调试器中检查:levelAndFlags是正确的(6),tag是正确的("My“),但是wakeLock.isValid()返回false。

这一行肯定有问题:

代码语言:javascript
复制
QAndroidJniObject wakeLock = powerMgr.callObjectMethod("newWakeLock", "(ILjava/lang/String;)Landroid/os/PowerManager/WakeLock;", levelAndFlags,tag.object<jstring>());

但我不知道是什么..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-09 12:59:51

嵌套类名需要特殊的语法:

代码语言:javascript
复制
Landroid/os/PowerManager/WakeLock

应:

代码语言:javascript
复制
Landroid/os/PowerManager$WakeLock

而且起作用了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34131470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档