android: Allow freerdp mobile version to be launched from URI (freerdp://)
authorzihao.jiang <zihao.jiang@yahoo.com>
Sat, 27 Feb 2016 10:31:43 +0000 (18:31 +0800)
committerzihao.jiang <zihao.jiang@yahoo.com>
Tue, 8 Mar 2016 19:22:02 +0000 (03:22 +0800)
commit0927114e83854b7da8ffb142bd2c6a9209b10f75
tree9cd34e42b8fb7af79f65a7a5ee5ef1243864dafb
parentb4b8239bf642a6cc41b2558e55be1b44577aa5dd
android: Allow freerdp mobile version to be launched from URI (freerdp://)
It would be good if we have a easy way to call aFreeRDP in another Android APP (Requirement also mentioned in #2720)
We can define a scheme (freerdp://) as unified way to launch FreeRDP from another APP or browser and connect to compatible RDP server
1. Define scheme freerdp://
2. General form could be freerdp://user@hostname:port/connect?key1=value&key2=-&key3=%2b&key4=
3. [user] part would be translated to /u:
4. [hostname:port] would be translated to /v:
5. The [user@hostname:port] part would be used as app title, currently it's just the progress dialog title
6. query parameters would be translated to command line arguments. Later same arguments will overwrite the formers:
    a. key1=value:  => /key1:value
    b. key2=-:  => -key2
    c. key3=%2b  => +key3 (%2b is url encoded +)
d. key4=  => /key4
e. Especially, drive=sdcard will be properly handled with local sdcard path. On my device it will be translated to /drive:sdcard,/storage/emulated/0

Owing to the refactor work in PR #3097, we now pass same command line argument to JNI for freerdp settings.
We just need to make the SessionActivity accept freerdp scheme and translate argument from URI form to command line form.
client/Android/Studio/freeRDPCore/src/main/AndroidManifest.xml
client/Android/Studio/freeRDPCore/src/main/java/com/freerdp/freerdpcore/application/GlobalApp.java
client/Android/Studio/freeRDPCore/src/main/java/com/freerdp/freerdpcore/application/SessionState.java
client/Android/Studio/freeRDPCore/src/main/java/com/freerdp/freerdpcore/presentation/SessionActivity.java
client/Android/Studio/freeRDPCore/src/main/java/com/freerdp/freerdpcore/services/LibFreeRDP.java