需求描述:
- When SKUI ID is 600TEL or 600CLA, When sending an email, it must be configure the signature:
Telcel: “Enviado desde mi <Name of Brand> de Telcel.”
Claro: “Enviado desde mi <Name of Brand> de Claro.” Where:
<Name of Brand> refers to Manufacturer.See <Quick Introduction to the Email PartnerProvider App for Android Go> -
Telcel is: “Enviado desde mi Nokia de Telcel.”
Claro is: “Enviado desde mi Nokia de Claro.”
在Google提供的GmailPartnerProvider中进行客制化,注:经同google确认过,该需求的全局签名对其他三方的邮箱签名都是有效的,除了gmail邮箱账号外。即使用Gmail登录163、QQ、Microsoft邮箱,邮箱签名有效,登录Gmail账户邮箱签名无效。
java/com/android/email/partnerprovider/PartnerProvider.java
在public Cursor query()方法中,case MATCH_GLOBAL_SIGNATURE时修改globalSignature,return 包含globalSignature该的cursor:
case MATCH_GLOBAL_SIGNATURE:
cursor = new MatrixCursor(GLOBAL_SIGNATURE_COLUMNS);
//+added
String globalSignature = "";
String str = getProperty("ro.boot.skuid", "");
if("600TEL".equals(str)||"600CLA".equals(str)) {
Resources res = getContext().getResources();
Configuration config = res.getConfiguration();
globalSignature = getContext().getString(R.string.global_signature);
Log.e(TAG, "chentest mmc=" + Integer.toString(config.mcc)
+ "-mnc=" + Integer.toString(config.mnc) + " globalSignature: " + globalSignature);
}
//-added
if (!TextUtils.isEmpty(globalSignature)) {
cursor.addRow(new Object[] {globalSignature});
}
return cursor;
res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="global_signature">Sent from Android device</string>
</resources>
同时可在不同的mcc/mnc string中根据不同SIM卡显示不同的语言,比如,res/values-mcc330-mnc110/strings.xml
<resources>
<string name="global_signature">Enviado desde mi Nokia de Claro.</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="global_signature">Enviado desde mi Nokia de Telcel.</string>
</resources>
×注:
若是Android Go项目,应修改AndroidManifest,xml
<provider
android:name=".PartnerProvider"
android:authorities="com.android.email.partnerprovider.lite"
android:exported="true"
android:permission="com.android.email.partnerprovider.PARTNER_PROVIDER" />
</application>
同时在java/com/android/email/partnerprovider/PartnerProvider.java
static final String AUTHORITY = "com.android.email.partnerprovider.lite";
若非Android Go项目,AndroidManifest,xml
<provider
android:name=".PartnerProvider"
android:authorities="com.android.email.partnerprovider"
android:exported="true"
android:permission="com.android.email.partnerprovider.PARTNER_PROVIDER" />
</application>
同时在java/com/android/email/partnerprovider/PartnerProvider.java
static final String AUTHORITY = "com.android.email.partnerprovider";
第二步,Android.mk文件
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmailPartnerProvider
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := platform
LOCAL_SDK_VERSION := current
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_SRC_FILES := $(call all-java-files-under)
include $(BUILD_PACKAGE)
第三步:将GmailPartnerProvider加入编译
android/device/qcom/项目/ 项目.mk
#+add
PRODUCT_PACKAGES += \
GmailPartnerProvider