Llamar a la actividad externa mediante una intención (explícita) de la aplicación Qt en Android – putExtra no funciona

Tengo siguiente problema: En Android mi aplicación basada en Qt (Qt 5.4.1 para móviles) llama a una actividad externa iniciando una intención explícita. Esto funciona muy bien en caso de que no se adjunten datos a la intención. Pero cuando uso putExtra para adjuntar una cadena etc la actividad de destino no encuentra estos datos.

Fragmento de la aplicación Qt:

QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;"); if (activity.isValid()) { QAndroidJniObject intent("android/content/Intent", "()V"); if (intent.isValid()) { QAndroidJniObject action = QAndroidJniObject::fromString("test.app.DO_SOMETHING"); if (action.isValid()) { intent.callObjectMethod("setAction", "(Ljava/lang/String;)Landroid/content/Intent;", action.object<jobject>()); QAndroidJniObject subject = QAndroidJniObject::fromString("test_subject"); QAndroidJniObject text = QAndroidJniObject::fromString("test_text"); jint flag = QAndroidJniObject::getStaticField<jint>("android/content/Intent", "FLAG_GRANT_READ_URI_PERMISSION"); intent.callObjectMethod("addFlags", "(I)V", flag); intent.callObjectMethod("putExtra", "(Ljava/lang/String;Ljava/lang/string;)Landroid/content/Intent;", subject.object<jstring>(), text.object<jstring>()); if (intent.isValid()) activity.callObjectMethod("startActivity", "(Landroid/content/Intent;)V", intent.object<jobject>()); } } } 

Snippet de la aplicación de destino de Java, que intenta obtener los datos adjuntos:

 public class Test_Activity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... Intent intent = getIntent(); String text = intent.getStringExtra("test_subject");//is null Bundle bundle = intent.getExtras();//is null ... } } 

Fragmento de AndroidManifest.xml (aplicación Java de destino):

 <intent-filter> <action android:name="test.app.DO_SOMETHING" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> 

Intenté un rato conseguirlo que funcionaba pero falló. ¿Qué estoy haciendo mal? ¿Podría faltar permiso o bandera?

Por favor ayuda. Muchas gracias.

One Solution collect form web for “Llamar a la actividad externa mediante una intención (explícita) de la aplicación Qt en Android – putExtra no funciona”

Necesita crear clase de clase Selector: public QAndroidActivityResultReceiver con función void handleActivityResult (int receiverRequestCode, int resultCode, const QAndroidJniObject & data) y comienza intención con const int REQUEST_CODE = 42; QtAndroid :: startActivity (intención, REQUEST_CODE, selector);

Por lo tanto, puede utilizar mi muestra en github repo

https://github.com/tripolskypetr/qmlchooseimage

  • Qt para Android - el equivalente de startActivityForResult no funciona
  • Cómo utilizar la clase Qt Jni "QAndroidJniObject"
  • Cómo eliminar el rectángulo de fecha seleccionado en QCalendarWidget y pequeños iconos en widgets
  • Adición de archivos adicionales a una aplicación de Android
  • Versión Qt / QML del kernel
  • QPushButton ha duplicado texto después de la actualización Qt
  • Qt Creator: No se han encontrado juegos válidos para Android
  • ¿Cómo especificar bibliotecas sólo para plataforma Android construir en el archivo .pro?
  • Qt streaming de llamadas de video móvil
  • Trabajar alrededor de QString móvil error
  • ¿Dónde se encuentra el botón "Crear AndroidManifest.xml" en Qt Creator 3.3.0?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.