Merge "Add runtime permission for CALL_PHONE"
am: c20fc3627f
Change-Id: Ib0d93cc923672b7e2a34dd5c49e939de902bbe6a
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;
+ }
}