【CTA】CTA认证要求打开日历时提示联系人权限确认

国内过CTA认证时,要求打开日历时提示联系人权限确认,这里所说的联系人权限不是系统默认赋予的权限提示,而是需要新加一个权限提示内容,让用户进行确认。

平台:Android P(9.0)

修改代码如下:

vendor/mediatek/proprietary/packages/apps/Calendar/res/values-zh-rCN/strings.xml

--- a/alps/vendor/mediatek/proprietary/packages/apps/Calendar/res/values-zh-rCN/strings.xml
+++ b/alps/vendor/mediatek/proprietary/packages/apps/Calendar/res/values-zh-rCN/strings.xml
@@ -280,4 +280,11 @@
     <string name="monthly_on_day_count">"每月(每月的<xliff:g id="ORDINAL_NUMBER">%1$s</xliff:g><xliff:g id="DAY_OF_WEEK">%2$s</xliff:g>)"</string>
+       <!-- CTA Monkey.20200410 -->
+       <string name="confirm_dialog_msg">"日历会尝试取得您的联系人权限以供功能正常运行"</string>
+       <string name="confirm_dialog_allow_button">"允许"</string>
+       <string name="confirm_dialog_deny_button">"拒绝"</string>
+       <string name="deny_toast_msg">"读取联系人权限失败,拒绝访问日历"</string>
+       <!-- END -->
 </resources>

vendor/mediatek/proprietary/packages/apps/Calendar/src/com/android/calendar/AllInOneActivity.java

--- a/alps/vendor/mediatek/proprietary/packages/apps/Calendar/src/com/android/calendar/AllInOneActivity.java
+++ b/alps/vendor/mediatek/proprietary/packages/apps/Calendar/src/com/android/calendar/AllInOneActivity.java
@@ -95,6 +95,12 @@ import java.util.TimeZone;
 import java.util.Arrays;
 import java.util.ArrayList;
 
+//Monkey.20200410 CTA
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+//END
+
 import static android.provider.CalendarContract.Attendees.ATTENDEE_STATUS;
 import static android.provider.CalendarContract.EXTRA_EVENT_ALL_DAY;
 import static android.provider.CalendarContract.EXTRA_EVENT_BEGIN_TIME;
@@ -116,6 +122,11 @@ public class AllInOneActivity extends AbstractCalendarActivity implements EventH
     // @}
     private static final int HANDLER_KEY = 0;
     private static float mScale = 0;
+       
+       //Monkey.20200410 CTA
+       private final String CALENDAR_CONFIRM_PREF_NAME = "ConfirmPrefFile";
+       private final String CONFIRM_VALUE_KEY = "mtk_calendar_confirmed";
+       //END
 
     // Indices of buttons for the drop down menu (tabs replacement)
     // Must match the strings in the array buttons_list in arrays.xml and the
@@ -634,6 +645,10 @@ public class AllInOneActivity extends AbstractCalendarActivity implements EventH
                            "AllInOneActivity.onCreate.restoreState");
 
         mBundleIcicleOncreate = icicle;
+               
+               //Monkey.20200410 CTA
+               buildAndShowConfirmDialog();
+               //END
 
         if (!checkAndRequestPermission(CALENDAR_ONCREATE_PERMISSIONS_REQUEST_CODE))
         {
@@ -1878,4 +1893,48 @@ public class AllInOneActivity extends AbstractCalendarActivity implements EventH
             mSearchMenu.expandActionView();
         }
     }
+       
+       /**
+        * Monkey.20200410
+        * CTA Dialog
+        */
+       private void setConfirmed() {
+          SharedPreferences settings = getSharedPreferences(CALENDAR_CONFIRM_PREF_NAME, 0);
+          SharedPreferences.Editor editor = settings.edit();
+          editor.putBoolean(CONFIRM_VALUE_KEY, true);
+          editor.commit();
+       }
+
+       private boolean getConfirmed() {
+          SharedPreferences settings = getSharedPreferences(CALENDAR_CONFIRM_PREF_NAME, 0);
+          return settings.getBoolean(CONFIRM_VALUE_KEY, false);
+       }
+
+       private void buildAndShowConfirmDialog() {
+          if (!getConfirmed()) {
+                  Log.d(TAG, "buildAndShowConfirmDialog()");
+                  Dialog dialog = new AlertDialog.Builder(this)
+                          .setMessage(R.string.confirm_dialog_msg)
+                          .setPositiveButton(R.string.confirm_dialog_allow_button,
+                                          new DialogInterface.OnClickListener() {
+                                                  public void onClick(DialogInterface dialog, int whichButton) {
+                                                               setConfirmed();
+                                                  }
+                                          })
+                          .setNegativeButton(R.string.confirm_dialog_deny_button,
+                                          new DialogInterface.OnClickListener() {
+                                                  public void onClick(DialogInterface dialog, int whichButton) {
+                                                          Toast toast = Toast.makeText(getApplicationContext(), R.string.deny_toast_msg,
+                                                                  Toast.LENGTH_LONG);
+                                                          toast.show();
+                                                          finish();
+                                                  }
+                                          })
+                  .create();
+                  dialog.setCanceledOnTouchOutside(false);
+                  dialog.setCancelable(false);
+                  dialog.show();
+          }
+    }
 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旧时旅人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值