Skip to content
Snippets Groups Projects
Commit 7f1692ee authored by Dennis's avatar Dennis
Browse files

Merge branch 'fix-upload' into 'master'

Fix upload

See merge request chat/RocketChatMobileEngine!97
parents 08a7e14b c691283b
No related branches found
No related tags found
1 merge request!97Fix upload
...@@ -40,15 +40,25 @@ void AndroidFileDialog::ResultReceiver::handleActivityResult( int receiverReques ...@@ -40,15 +40,25 @@ void AndroidFileDialog::ResultReceiver::handleActivityResult( int receiverReques
QString AndroidFileDialog::ResultReceiver::uriToPath( const QAndroidJniObject &uri ) QString AndroidFileDialog::ResultReceiver::uriToPath( const QAndroidJniObject &uri )
{ {
QAndroidJniEnvironment env; QAndroidJniEnvironment env;
QString path = uri.callObjectMethod( "getPath", "()Ljava/lang/String;" ).toString();
if ( uri.toString().startsWith( "file:", Qt::CaseInsensitive ) ) { if ( uri.toString().startsWith( "file:", Qt::CaseInsensitive ) ) {
return uri.callObjectMethod( "getPath", "()Ljava/lang/String;" ).toString(); return uri.callObjectMethod( "getPath", "()Ljava/lang/String;" ).toString();
} }
QAndroidJniObject data = QAndroidJniObject::callStaticObjectMethod("com/osalliance/rocketchatMobile/MainActivity",
"uriToData",
"(Ljava/lang/String;)[B", QAndroidJniObject::fromString(uri.toString()).object<jstring>());
qDebug() << "opening uri "<<uri.toString();
QAndroidJniObject contentResolver = QtAndroid::androidActivity().callObjectMethod( "getContentResolver", "()Landroid/content/ContentResolver;" ); QAndroidJniObject contentResolver = QtAndroid::androidActivity().callObjectMethod( "getContentResolver", "()Landroid/content/ContentResolver;" );
QAndroidJniObject cursor = contentResolver.callObjectMethod( "query", "(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;", uri.object<jobject>(), 0, 0, 0, 0 ); QAndroidJniObject cursor = contentResolver.callObjectMethod( "query", "(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;", uri.object<jobject>(), 0, 0, 0, 0 );
QAndroidJniObject DATA = QAndroidJniObject::fromString( "_data" ); QAndroidJniObject DATA = QAndroidJniObject::fromString( "_display_name" );
jint columnIndex = cursor.callMethod<jint>( "getColumnIndexOrThrow", "(Ljava/lang/String;)I", DATA.object<jstring>() ); jint columnIndex = cursor.callMethod<jint>( "getColumnIndexOrThrow", "(Ljava/lang/String;)I", DATA.object<jstring>() );
jbyteArray dataArray = data.object<jbyteArray>();
jsize iconSize = env->GetArrayLength(dataArray);
jbyte *realdata = env->GetByteArrayElements(dataArray, JNI_FALSE);
QString cache = QStandardPaths::writableLocation( QStandardPaths::TempLocation );
QDir cacheDir(cache);
QUuid id = QUuid::createUuid();
if ( env->ExceptionCheck() ) { if ( env->ExceptionCheck() ) {
qWarning() << "Fileupload: JAVA exception: "; qWarning() << "Fileupload: JAVA exception: ";
...@@ -59,9 +69,18 @@ QString AndroidFileDialog::ResultReceiver::uriToPath( const QAndroidJniObject &u ...@@ -59,9 +69,18 @@ QString AndroidFileDialog::ResultReceiver::uriToPath( const QAndroidJniObject &u
cursor.callMethod<jboolean>( "moveToFirst", "()Z" ); cursor.callMethod<jboolean>( "moveToFirst", "()Z" );
QAndroidJniObject result = cursor.callObjectMethod( "getString", "(I)Ljava/lang/String;", columnIndex ); QAndroidJniObject result = cursor.callObjectMethod( "getString", "(I)Ljava/lang/String;", columnIndex );
QString displayName = result.isValid() ? result.toString() : QString( "null" );
return result.isValid() ? result.toString() : QString( "null" ); QString cacheFile = cacheDir.filePath(displayName);
qDebug() <<"cachefile: " << cacheFile;
QFile file(cacheFile);
if(realdata != nullptr){
if(file.open(QIODevice::WriteOnly)){
file.write((const char*)realdata,iconSize);
}
qDebug() <<"wrote file " << cacheFile;
return cacheFile;
}
return QString( "null" );
} }
AndroidFileDialog::AndroidFileDialog( QObject *parent ) : QObject( parent ) AndroidFileDialog::AndroidFileDialog( QObject *parent ) : QObject( parent )
......
...@@ -26,6 +26,9 @@ ...@@ -26,6 +26,9 @@
#include <QtAndroid> #include <QtAndroid>
#include <QAndroidActivityResultReceiver> #include <QAndroidActivityResultReceiver>
#include <QAndroidJniEnvironment> #include <QAndroidJniEnvironment>
#include <QStandardPaths>
#include <QDir>
#include <QUuid>
class AndroidFileDialog : public QObject class AndroidFileDialog : public QObject
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment