Aşağıdaki sorunu yaşıyorum: Android'de benim Qt tabanlı uygulamasında (Qt 5.4.1 mobil için) açık bir etkinlik başlatarak harici bir etkinlik çağrılıyor niyet. Bu, niyete hiçbir veri eklenmediğinde çok iyi çalışır. Ancak putExtra'yı bir dize vb. Eklemek için kullandığımda, hedef etkinlik bu verileri bulamıyor. Qt uygulamasınınAndroid'de Qt uygulamasının amacı ile (açık) harici etkinlik arama - putExtra çalışmıyor
pasajı: AndroidManifest.xml (hedef Java uygulaması) arasında
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
...
}
}
pasajı: ekli verileri almak için çalışır Java hedef app ait
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>());
}
}
}
pasajı:
<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>
Çalıştırmak için biraz uğraştım ama başarısız oldu. Ne yapıyorum yanlış? İzin veya bayrak eksik olabilir mi?
LütfenYardım edin. Çok teşekkürler.