我想知道Android的电池技术。我已经用broadcastreceiver完成了Javacode,并且做得很好。但是当我在Qt中使用java类获取电池时,意图不能从java代码中运行。所以我决定让它在Qt中运行。
QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");
if (activity.isValid())
{
QAndroidJniObject callConstant = QAndroidJniObject::getStaticObjectField<jstring>("android/content/Intent", "ACTION_BATTERY_CHANGED");
QAndroidJniObject callIntent("android/content/Intent", "(Ljava/lang/String;)V", callConstant.object());
QAndroidJniObject param = QAndroidJniObject::fromString("technology" ) ;
mySubstring = callIntent.callObjectMethod("getStringExtra"
,"(Ljava/lang/String;)Ljava/lang/String;"
,param.object()) ;
if(callIntent.isValid())
{
activity.callObjectMethod("startActivity", "(Landroid/content/Intent;)V", callIntent.object<jobject>());
//activity.callMethod<void>("startActivity","(Landroid/content/Intent;)V", callIntent.object<jobject>());
}}
这两行代码都会使程序严重停顿。我还是不知道
activity.callObjectMethod("startActivity", "(Landroid/content/Intent;)V", callIntent.object<jobject>());
//activity.callMethod<void>("startActivity","(Landroid/content/Intent;)V", callIntent.object<jobject>());祝职业选手周末愉快!
发布于 2015-06-13 18:08:31
我找到的解决方法是在main中使用QtAndroid::androidActivity().callMethod并更改MyActivity扩展QtActivity而不是Activity,或者在Android中使用其他方法。这很简单,通过这种方式,我可以获得电池信息。这就是解决问题的好办法。但是为什么我之前的代码activity.callObjectMethod("startActivity","(Landroid/content/Intent;)V",callIntent.object());使程序严重崩溃是因为我仍然没有找到确切的答案。谢谢你。
https://stackoverflow.com/questions/30816955
复制相似问题