void CallNativeGallery::openGallery()
{
#ifdef  Q_OS_ANDROID
    // android.content.Intent.ACTION_GET_CONTENT

    QAndroidJniObject action = QAndroidJniObject::getStaticObjectField(
                "android/content/Intent",
                "ACTION_GET_CONTENT",
                "Ljava/lang/String;");

    QAndroidJniObject intent("android/content/Intent",
                             "(Ljava/lang/String;)V",
                             action.object<jstring>());
    Q_SAFE_CALL_JAVA

    // Intent setType(String type)
    QAndroidJniObject type = QAndroidJniObject::fromString("image/*");
    intent.callObjectMethod("setType",
                            "(Ljava/lang/String;)Landroid/content/Intent;",
                            type.object<jstring>());

    Q_SAFE_CALL_JAVA

    galleryResultReceiver->notify = this;


    QtAndroid::startActivity(intent,
                             GalleryResultReceiver::ReceiverRequestCode,
                             galleryResultReceiver);



#endif
}
Пример #2
0
void NativeMap::open()
{
	qDebug() << "NativeMap::open()...";
	qDebug() << "location = " << location;
	qDebug() << "longitude = " << longitude;
	qDebug() << "latitude = " << latitude;
	qDebug() << "zoom = " << zoom;

#ifdef Q_OS_ANDROID
	qDebug() << "NativeMap::open()...ANDROID";
	QAndroidJniObject activity = QtAndroid::androidActivity();

	if ( activity.isValid() )
	{
		/*QAndroidJniEnvironment env;
		jclass cls = env->FindClass( "wpp.android.AMapActivity" );
		qDebug() << "cls:" << cls;
		QAndroidJniObject anIntent("android/content/Intent","(Landroid/content/Context;Ljava/lang/Class;)V",
								 activity.object<jobject>(), cls);
		qDebug() << "anIntent.isvalid=" << anIntent.isValid();
		*/

		// Equivalent to Jave code: 'Intent intent = new Intent();'
		QAndroidJniObject intent("android/content/Intent","()V");
		if ( intent.isValid() )
		{
			QAndroidJniObject packageName = activity.callObjectMethod("getPackageName","()Ljava/lang/String;");
			qDebug() << "packageName.isValid=" << packageName.isValid();
			qDebug() << "packageName=" << packageName.toString();

			QAndroidJniObject param2 = QAndroidJniObject::fromString("wpp.android.AMapActivity");

			if ( packageName.isValid() && param2.isValid() )
			{
				qDebug() << "111...";
				// Equivalent to Jave code: 'intent.setClassName("com.kuulabu.android.app", "com.kuulabu.android.app.BasicMapActivity");'
				intent.callObjectMethod("setClassName",
										"(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;",
										packageName.object<jobject>(),
										param2.object<jobject>());

				QAndroidJniObject locationKey = QAndroidJniObject::fromString("MAP_LOCATION");
				QAndroidJniObject locationValue = QAndroidJniObject::fromString(this->location);
				intent.callObjectMethod(
							"putExtra","(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;",
							locationKey.object<jstring>(), locationValue.object<jstring>());

				QAndroidJniObject longitudeKey = QAndroidJniObject::fromString("MAP_LONGITUDE");
				QAndroidJniObject longitudeValue = QAndroidJniObject::fromString(QString::number(this->longitude));
				intent.callObjectMethod(
							"putExtra","(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;",
							longitudeKey.object<jstring>(), longitudeValue.object<jstring>());

				QAndroidJniObject latitudeKey = QAndroidJniObject::fromString("MAP_LATITUDE");
				QAndroidJniObject latitudeValue = QAndroidJniObject::fromString(QString::number(this->latitude));
				intent.callObjectMethod(
							"putExtra","(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;",
							latitudeKey.object<jstring>(), latitudeValue.object<jstring>());

				QAndroidJniObject zoomKey = QAndroidJniObject::fromString("MAP_ZOOM");
				QAndroidJniObject zoomValue = QAndroidJniObject::fromString(QString::number(this->zoom));
				intent.callObjectMethod(
							"putExtra","(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;",
							zoomKey.object<jstring>(), zoomValue.object<jstring>());

				qDebug() << "222...";
				// Equivalent to Jave code: 'startActivity(intent);'
				//activity.callMethod<void>("startActivity","(Landroid/content/Intent;)V",intent.object<jobject>());
				//QtAndroid::startActivity(intent, 0, 0);
				int LOCATE_EVENT_VENUE = 1;
				QtAndroid::startActivity(intent, LOCATE_EVENT_VENUE, this);
				qDebug() << "333...";
			}

		}
	}
#endif

}