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.

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 en Android: el código C ++ se ejecuta en la máquina virtual Dalvik
  • Biblioteca multiplataforma para comunicaciones entre C ++ y código nativo de plataforma (iOS, Android)
  • Cómo obtener NFC trabajando en Android con Qt 5.6
  • Ejecutar archivo java en qt
  • Biblioteca Qt C ++ en Android Proyecto Eclipse: controlador QSQLITE no cargado
  • En Qt / QML, cómo cargar diferentes imágenes para diferentes densidades de dispositivos (Android)
  • Compilación de la aplicación Qt para Android usando CMake (no por Qt Creator)
  • ¿Está QT disponible para plataformas Android y iPhone?
  • Configurar una aplicación Qt5 5.7 para Android con CMake
  • Escribir una aplicación Qt en una tableta
  • Cómo agregar archivos de expansión de Android con Qt
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.