diff --git a/src/com/android/gallery3d/app/AbstractGalleryActivity.java b/src/com/android/gallery3d/app/AbstractGalleryActivity.java
index 824f6b9..7b3efb9 100755
--- a/src/com/android/gallery3d/app/AbstractGalleryActivity.java
+++ b/src/com/android/gallery3d/app/AbstractGalleryActivity.java
@@ -256,6 +256,7 @@
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
         mGLRootView.lockRenderThread();
         try {
             getStateManager().notifyActivityResult(
diff --git a/src/com/android/gallery3d/app/AbstractPermissionActivity.java b/src/com/android/gallery3d/app/AbstractPermissionActivity.java
old mode 100644
new mode 100755
index f193e7f..8b32dbf
--- a/src/com/android/gallery3d/app/AbstractPermissionActivity.java
+++ b/src/com/android/gallery3d/app/AbstractPermissionActivity.java
@@ -30,10 +30,13 @@
 
 import android.Manifest;
 import android.app.Activity;
+import android.app.role.RoleManager;
+import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.os.Build;
 import android.os.Bundle;
 import android.support.v4.app.FragmentActivity;
+import android.widget.Toast;
 
 import java.util.ArrayList;
 
@@ -41,6 +44,7 @@
 
     public static final int PERMISSION_REQUEST_STORAGE = 1;
     private boolean permissionGranted = false;
+    private final int REQUEST_GALLERY_ROLE = 1001;
 
     protected abstract void onGetPermissionsSuccess();
     protected abstract void onGetPermissionsFailure();
@@ -49,6 +53,20 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         requestStoragePermission();
+        RoleManager roleManager = getSystemService(RoleManager.class);
+        if (!roleManager.isRoleHeld(RoleManager.ROLE_GALLERY)) {
+            startActivityForResult(roleManager.createRequestRoleIntent(RoleManager.ROLE_GALLERY),
+                    REQUEST_GALLERY_ROLE);
+        }
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == REQUEST_GALLERY_ROLE && Activity.RESULT_CANCELED == resultCode) {
+            Toast.makeText(getApplicationContext(),
+                    "Granting failed. SnapdragonGallery can't edit media files.",
+                    Toast.LENGTH_SHORT).show();
+        }
     }
 
     private void requestStoragePermission() {
