2015-06-13 192 views
0

我想知道在Android的電池技術。我用廣播接收器完成並完成了Javacode。但是當我使用java類來獲取Qt中的電池時,意圖不會從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>()); 

Pro週末愉快! 。

回答

0

我發現解決的方法是在main和change中使用QtAndroid :: androidActivity()。callMethod MyActivity擴展QtActivity而不是Activity或者在Android中。這很簡單,通過這種方式我可以獲得電池信息。這是解決問題的明智之路。但爲什麼我以前的代碼activity.callObjectMethod(「startActivity」,「(Landroid/content/Intent;)V」,callIntent.object());使程序嚴重受損是我仍然沒有確切地發現。謝謝 。

相關問題