diff --git a/contrib/mobile/Android/AndroidManifest.xml b/contrib/mobile/Android/AndroidManifest.xml
index ce2626134e71902aed35b489a5bac80c64886a80..0af6f2aa88482fe31c98e60bb4b865b141714771 100644
--- a/contrib/mobile/Android/AndroidManifest.xml
+++ b/contrib/mobile/Android/AndroidManifest.xml
@@ -20,13 +20,14 @@
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
-            <intent-filter >
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.DEFAULT" />
-        		<category android:name="android.intent.category.BROWSABLE" />
-            	<data android:scheme="*"  android:host="*" android:pathPattern=".*\\.geo" android:mimeType="text/plain"  />    
-            </intent-filter>
+			<intent-filter>
+				<action android:name="android.intent.action.VIEW" />
+				<category android:name="android.intent.category.DEFAULT" />
+				<data android:scheme="file"  android:host="*" android:pathPattern=".*\\.msh" android:mimeType="*/*"  />
+				<data android:scheme="file"  android:host="*" android:pathPattern=".*\\.geo" android:mimeType="*/*"  />
+				<data android:scheme="file"  android:host="*" android:pathPattern=".*\\.pro" android:mimeType="*/*"  />
+			</intent-filter>
         </activity>
     </application>
 
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
index 885845d0eea08ffe3b5f637e8b3069aaa5404a86..16cac2cb832176c402326d6af84a228bbf063e97 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
@@ -92,16 +92,22 @@ public class MainActivity extends Activity {
     	pager.setCurrentItem(0);
     	layout.addView(pager);
     	dialogBuilder = new AlertDialog.Builder(this);
+
+    	Intent intent = getIntent();
     	
     	gmsh = new Gmsh("", mainHandler);
     	modelList = new Models();
     	getModels();
     	loadNative();
-    	if(modelList.size() > 0){
+    	if(intent.getAction().equals(Intent.ACTION_VIEW)) {
+    		String tmp = intent.getData().getPath();
+    		gmsh.load(tmp);
+    	}
+    	else if(modelList.size() > 0){
     		model = 0;
 	    	String tmp = getFilesDir()+ "/" + modelList.getFile(model);
 	    	gmsh.load(tmp);
-    	}
+    	}    	
     	setContentView(layout);
     }
     
diff --git a/contrib/mobile/androidGModel.cpp b/contrib/mobile/androidGModel.cpp
index 8f3ebb23f37d547d1fe0a41da1390648fb098ade..41f84f6ec5108f115da0361d7a81f7914f8df6a5 100644
--- a/contrib/mobile/androidGModel.cpp
+++ b/contrib/mobile/androidGModel.cpp
@@ -48,6 +48,8 @@ class MobileMessage : public GmshMessage
 			env->CallVoidMethod(gCallbackObject, mid, jstr);
 			env->DeleteLocalRef(jstr);
 			env->DeleteLocalRef(jClass);
+	 		LOGE("%s", message.c_str());
+			return;
 		}
 		else if(level == "Progress")
 		{
@@ -67,6 +69,7 @@ class MobileMessage : public GmshMessage
 			env->CallVoidMethod(gCallbackObject, mid, jstr);
 			env->DeleteLocalRef(jstr);
 			env->DeleteLocalRef(jClass);
+			return;
 		}
 		else if(level == "RequestRender")
 		{