无法使用QAndroidJniObject调用PowerManager.WakeLock.newWakeLock
Unable to call PowerManager.WakeLock.newWakeLock using QAndroidJniObject
我正在尝试执行以下Java代码:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
使用QtQAndroidJniObject(我正在Android上部署一个Qt应用程序)。
我做到了:
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 Tag"),但wakeLock.isValid()
返回false。
这条线路肯定有问题:
QAndroidJniObject wakeLock = powerMgr.callObjectMethod("newWakeLock", "(ILjava/lang/String;)Landroid/os/PowerManager/WakeLock;", levelAndFlags,tag.object<jstring>());
但我不知道是什么。。。
Landroid/os/PowerManager/WakeLock
应为:
Landroid/os/PowerManager$WakeLock
它起作用了!
相关文章:
- 为什么我在代码厨师的 CMPRSS 问题中得到 WA(错误答案)?
- 我已经通过了该问题的所有测试用例,甚至是Udebugg上的所有测试用例,并且仍然在UVA在线法官上获得了WA裁决
- 带地图的解决方案给了空调,unordered_map的解决方案给了WA.为什么
- 为什么我在SPOJ上为Buglife获得WA
- SPOJ GSS1 WA - Segment tree
- 当我试图提交mkbudge-spoj时获得WA
- Getting WA for SPOJ smpseq
- 无法使用QAndroidJniObject调用PowerManager.WakeLock.newWakeLock
- 给出WA的简单算术(ARITH)
- 为什么我在Codechef的褪色回文中得到一个WA,即使我在我的代码中没有发现任何错误,它对我来说工作得很好
- 3n+1 uVa gives WA
- 从Codechef长征比赛中获得ANUGCD的WA
- 在SPOJ INCSEQ -递增子序列中获取WA