android 读取短信 彩信,Android 短信转换成彩信的消息数量(实例代码)

本文解析了Android平台中短信转化为彩信的触发条件,重点在于介绍`MmsConfig.SmsToMmsTextThreshold`变量的含义,并详细展示了如何根据输入字符数判断是否需要发送彩信。了解了短信计数器的工作原理,有助于优化消息编辑体验。
摘要由CSDN通过智能技术生成

默认3条以上转为彩信

改为5条

路径vendor/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/MmsConfig.java

private static int sSmsToMmsTextThreshold = 6; // 4

变量定义字面意思就可以理解 以下是代码分析

vendor/mediatek/proprietary/packages/apps/Mms/res/layout/compose_message_activity.xml

布局文件

vendor/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java

private EnhanceEditText mTextEditor; // Text editor to type your message into //消息输入框

private TextView mTextCounter; // Shows the number of characters used in text editor //剩余字数显示

private TextView mSendButtonMms; // Press to send mms //彩信发送按钮,TextView中加入图片

private ImageButton mSendButtonSms; // Press to send sms //短信发送按钮

private void updateCounter(CharSequence text, int start, int before, int count) {

...

int[] params = null;

int encodingType = SmsMessage.ENCODING_UNKNOWN;

encodingType = mOpComposeExt.getSmsEncodingType(encodingType, ComposeMessageActivity.this);

params = SmsMessage.calculateLength(text, false, encodingType);

/* SmsMessage.calculateLength returns an int[4] with:

* int[0] being the number of SMS's required,

* int[1] the number of code units used,

* int[2] is the number of code units remaining until the next message.

* int[3] is the encoding type that should be used for the message.

*/

final int msgCount = params[0]; //已输入短信条数

final int remainingInCurrentMessage = params[2]; //剩余字数

mWorkingMessage.setLengthRequiresMms(

msgCount >= MmsConfig.getSmsToMmsTextThreshold(), true); //转为彩信的短信条数

MmsLog.d(TAG, "updateCounter(): message msgCount = " + msgCount

+ " TextThreshold() = " + MmsConfig.getSmsToMmsTextThreshold()

+ " remainingInCurrentMessage = " + remainingInCurrentMessage);

/// M: Show the counter

/// M: Update the remaining characters and number of messages required.

if (msgCount >= MmsConfig.getSmsToMmsTextThreshold()) {

mTextCounter.setVisibility(View.GONE);

return;

}

mUiHandler.postDelayed(new Runnable() {

@Override

public void run() {

if (mOpComposeExt.updateCounterUiRun(mTextEditor, remainingInCurrentMessage,

msgCount, mWorkingMessage)) {

return;

}

MmsLog.d(TAG, "updateCounter requiresMms = " + mWorkingMessage.requiresMms()

+ " line count = " + mTextEditor.getLineCount());

if (mWorkingMessage.requiresMms() || mTextEditor.getLineCount() <= 1) {

mTextCounter.setVisibility(View.GONE);

return;

}

mTextCounter.setVisibility(View.VISIBLE);

String counterText = remainingInCurrentMessage + "/" + msgCount;

mTextCounter.setText(counterText);

}

}, 100);

//显示短信发送按钮或彩信发送按钮

private View showSmsOrMmsSendButton(boolean isMms) {

View showButton = null;

View hideButton = null;

// add for ipmessage

if (isMms) {

if (mSubCount == 0 || (isRecipientsEditorVisible()

&& TextUtils.isEmpty(mRecipientsEditor.getText()))

/// M: fix bug ALPS00563318, show gray mms_send_button

/// when haven't subject, text and attachment

|| ((mSubjectTextEditor == null || (mSubjectTextEditor != null

&& TextUtils.isEmpty(mSubjectTextEditor.getText().toString().trim())))

&& mTextEditor != null

&& TextUtils.isEmpty(mTextEditor.getText().toString().trim())

&& !mWorkingMessage.hasAttachment())

|| !mIsSmsEnabled) {

mSendButtonMms.setCompoundDrawablesWithIntrinsicBounds(null, null, null,

getResources().getDrawable(R.drawable.ic_send_sms_unsend));

} else {

mSendButtonMms.setCompoundDrawablesWithIntrinsicBounds(null, null, null,

getResources().getDrawable(R.drawable.ic_send_ipmsg));

}

showButton = mSendButtonMms;

hideButton = mSendButtonSms;

} else {

if (!mIpCompose.onIpShowSmsOrMmsSendButton(isMms)) {

if ((mTextEditor.getText().toString().isEmpty())

|| mSubCount == 0

|| (isRecipientsEditorVisible()

&& TextUtils.isEmpty(mRecipientsEditor.getText()))

|| recipientCount() > MmsConfig.getSmsRecipientLimit()

|| !mIsSmsEnabled) {

///@}

mSendButtonSms.setImageResource(R.drawable.ic_send_sms_unsend);

} else {

mSendButtonSms.setImageResource(R.drawable.ic_send_ipmsg);

}

}

showButton = mSendButtonSms;

hideButton = mSendButtonMms;

}

if (showButton != null) {

showButton.setVisibility(View.VISIBLE);

}

if (hideButton != null) {

hideButton.setVisibility(View.GONE);

}

updateTextEditorHint();

return showButton;

}

以上所述是小编给大家介绍的Android 短信转换成彩信的消息数量,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

时间: 2017-05-24

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是获取Android手机所有短信的实现代码。需要注意的是,需要在AndroidManifest.xml文件添加读取短信的权限。 ```java import android.Manifest; import android.content.ContentResolver; import android.content.pm.PackageManager; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.Telephony; import android.util.Log; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; private static final int PERMISSIONS_REQUEST_READ_SMS = 100; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 检查权限 if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_SMS}, PERMISSIONS_REQUEST_READ_SMS); } else { readSms(); } } private void readSms() { Uri smsUri = Telephony.Sms.CONTENT_URI; ContentResolver contentResolver = getContentResolver(); Cursor cursor = contentResolver.query(smsUri, null, null, null, null); if (cursor == null) { Log.d(TAG, "读取短信失败"); return; } while (cursor.moveToNext()) { // 读取短信内容及发送方号码 String address = cursor.getString(cursor.getColumnIndex(Telephony.Sms.ADDRESS)); String body = cursor.getString(cursor.getColumnIndex(Telephony.Sms.BODY)); Log.d(TAG, "address: " + address + ", body: " + body); } cursor.close(); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == PERMISSIONS_REQUEST_READ_SMS) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { readSms(); } else { Log.d(TAG, "权限被拒绝"); } } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值