Merge "Add runtime permission for CALL_PHONE"
diff --git a/src/com/android/apps/tag/record/UriRecord.java b/src/com/android/apps/tag/record/UriRecord.java
index 2846e83..a54eab3 100644
--- a/src/com/android/apps/tag/record/UriRecord.java
+++ b/src/com/android/apps/tag/record/UriRecord.java
@@ -23,6 +23,7 @@
 import com.google.common.collect.ImmutableBiMap;
 import com.google.common.primitives.Bytes;
 
+import android.Manifest;
 import android.app.Activity;
 import android.content.ActivityNotFoundException;
 import android.content.Context;
@@ -107,6 +108,9 @@
     @Override
     public void onClick(View view) {
         RecordUtils.ClickInfo info = (RecordUtils.ClickInfo) view.getTag();
+        if (requestPermissionIfNeeded(info.activity, info.intent)) {
+            return;
+        }
         try {
             info.activity.startActivity(info.intent);
             info.activity.finish();
@@ -144,4 +148,16 @@
     public static NdefRecord newUriRecord(Uri uri) {
         return NdefRecord.createUri(uri);
     }
+
+    private boolean requestPermissionIfNeeded(Activity activity, Intent intent) {
+        boolean needRequestPermission = false;
+        if (Intent.ACTION_CALL.equals(intent.getAction())) {
+            if (activity.checkSelfPermission(Manifest.permission.CALL_PHONE)
+                    != PackageManager.PERMISSION_GRANTED) {
+                needRequestPermission = true;
+                activity.requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, 1);
+            }
+        }
+        return needRequestPermission;
+    }
 }