2015-06-13 2 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

Я выясняю, как решить проблему с использованием QtAndroid :: androidActivity(). CallMethod main и изменение MyActivity расширяет QtActivity вместо Activity или Android. Это просто и, таким образом, я могу получить информацию о батарее. Это яркий способ решить. Но почему мой предыдущий код activity.callObjectMethod («startActivity», «(Landroid/content/Intent;) V», callIntent.object()); сделать программу сильно разбитой, я до сих пор не знаю точно. Спасибо .

Смежные вопросы