当前位置: 首页>>代码示例>>Java>>正文


Java SmsMessage.calculateLength方法代码示例

本文整理汇总了Java中android.telephony.SmsMessage.calculateLength方法的典型用法代码示例。如果您正苦于以下问题:Java SmsMessage.calculateLength方法的具体用法?Java SmsMessage.calculateLength怎么用?Java SmsMessage.calculateLength使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在android.telephony.SmsMessage的用法示例。


在下文中一共展示了SmsMessage.calculateLength方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: calculateCharacters

import android.telephony.SmsMessage; //导入方法依赖的package包/类
@Override
public CharacterState calculateCharacters(String messageBody) {

  int[] length            = SmsMessage.calculateLength(messageBody, false);
  int messagesSpent       = length[0];
  int charactersSpent     = length[1];
  int charactersRemaining = length[2];

  int maxMessageSize;

  if (messagesSpent > 0) {
    maxMessageSize = (charactersSpent + charactersRemaining) / messagesSpent;
  } else {
    maxMessageSize = (charactersSpent + charactersRemaining);
  }
  
  return new CharacterState(messagesSpent, charactersRemaining, maxMessageSize);
}
 
开发者ID:XecureIT,项目名称:PeSanKita-android,代码行数:19,代码来源:SmsCharacterCalculator.java

示例2: addressContainsEmailToMms

import android.telephony.SmsMessage; //导入方法依赖的package包/类
private boolean addressContainsEmailToMms(Conversation conv, String text) {
	if (MmsConfig.getEmailGateway() != null) {
		String[] dests = conv.getRecipients().getNumbers();
		int length = dests.length;
		for (int i = 0; i < length; i++) {
			if (Mms.isEmailAddress(dests[i])
					|| MessageUtils.isAlias(dests[i])) {
				String mtext = dests[i] + " " + text;
				int[] params = SmsMessage.calculateLength(mtext, false);
				if (params[0] > 1) {
					updateState(RECIPIENTS_REQUIRE_MMS, true, true);
					ensureSlideshow();
					syncTextToSlideshow();
					return true;
				}
			}
		}
	}
	return false;
}
 
开发者ID:CommonQ,项目名称:sms_DualCard,代码行数:21,代码来源:WorkingMessage.java

示例3: addressContainsEmailToMms

import android.telephony.SmsMessage; //导入方法依赖的package包/类
private boolean addressContainsEmailToMms(Conversation conv, String text) {
    if (MmsConfig.getEmailGateway() != null) {
        String[] dests = conv.getRecipients().getNumbers();
        int length = dests.length;
        for (int i = 0; i < length; i++) {
            if (Mms.isEmailAddress(dests[i]) || MessageUtils.isAlias(dests[i])) {
                String mtext = dests[i] + " " + text;
                int[] params = SmsMessage.calculateLength(mtext, false);
                if (params[0] > 1) {
                    updateState(RECIPIENTS_REQUIRE_MMS, true, true);
                    ensureSlideshow();
                    syncTextToSlideshow();
                    return true;
                }
            }
        }
    }
    return false;
}
 
开发者ID:slvn,项目名称:android-aosp-mms,代码行数:20,代码来源:WorkingMessage.java

示例4: retriveSentSmsFromDefaultApp

import android.telephony.SmsMessage; //导入方法依赖的package包/类
private void retriveSentSmsFromDefaultApp(){
		Uri uriSMSURI = Uri.parse("content://sms");
//		String[] FROM = { "_id", "type", "date", "thread_id", "address","length(body) as sms_lenth"};
		Cursor cur = getContentResolver().query(uriSMSURI, null, null , null, null);
		int id = cur.getColumnIndex("_id");
		int type = cur.getColumnIndex( "type" );
		int date = cur.getColumnIndex( "date");
		int threadID = cur.getColumnIndex( "thread_id");
		int address = cur.getColumnIndex("address");
		int body = cur.getColumnIndex("body");
		if(cur!=null && cur.moveToFirst()){
			do {
				int[] ar = SmsMessage.calculateLength(cur.getString(body),true);
				textView1.append("id: "+cur.getInt(id)+ " \t address: "+cur.getString(address)+"\t msg length: "+ar[0] +"\nthread_id: "+cur.getString(threadID)+" \t type: "+cur.getString(type)+"\ndate: "+getStringFromMillis(Constants.SMS_DATE_FORMAT,cur.getLong(date)));
				textView1.append("\n====================\n");
				
				
			}while ( cur.moveToNext());
		}
	}
 
开发者ID:noundla,项目名称:SMSListTracker,代码行数:21,代码来源:SmsListActivity.java

示例5: afterTextChanged

import android.telephony.SmsMessage; //导入方法依赖的package包/类
/**
 * {@inheritDoc}
 */
public void afterTextChanged(final Editable s) {
    final int len = s.length();
    if (len == 0) {
        if (cbmgr.hasText()
                && !PreferenceManager.getDefaultSharedPreferences(context).getBoolean(
                PreferencesActivity.PREFS_HIDE_PASTE, false)) {
            tvPaste.setVisibility(View.VISIBLE);
        } else {
            tvPaste.setVisibility(View.GONE);
        }
        tvTextLabel.setVisibility(View.GONE);
    } else {
        tvPaste.setVisibility(View.GONE);
        if (len > TEXT_LABLE_MIN_LEN) {
            try {
                int[] l = SmsMessage.calculateLength(s.toString(), false);
                tvTextLabel.setText(l[0] + "/" + l[2]);
                tvTextLabel.setVisibility(View.VISIBLE);
            } catch (Exception e) {
                Log.e(TAG, "error calculating message length", e);
            }
        } else {
            tvTextLabel.setVisibility(View.GONE);
        }
    }
}
 
开发者ID:andrewxu10,项目名称:Upkeep,代码行数:30,代码来源:MyTextWatcher.java

示例6: stripAccents

import android.telephony.SmsMessage; //导入方法依赖的package包/类
public static String stripAccents(String s) {
    int[] messageData = SmsMessage.calculateLength(s, false);

    if (messageData[0] != 1) {
        for (int i = 0; i < characters.length(); i++) {
            s = s.replaceAll(characters.substring(i, i + 1), gsm.substring(i, i + 1));
        }
    }

    return s;
}
 
开发者ID:moezbhatti,项目名称:qksms,代码行数:12,代码来源:StripAccents.java

示例7: getNumPages

import android.telephony.SmsMessage; //导入方法依赖的package包/类
/**
 * Gets the number of pages in the SMS based on settings and the length of string
 *
 * @param settings is the settings object to check against
 * @param text     is the text from the message object to be sent
 * @return the number of pages required to hold message
 */
public static int getNumPages(Settings settings, String text) {
    if (settings.getStripUnicode()) {
        text = StripAccents.stripAccents(text);
    }

    int[] data = SmsMessage.calculateLength(text, false);
    return data[0];
}
 
开发者ID:moezbhatti,项目名称:qksms,代码行数:16,代码来源:Utils.java

示例8: calculateCharacters

import android.telephony.SmsMessage; //导入方法依赖的package包/类
@Override
public CharacterState calculateCharacters(String messageBody) {

  int[] length            = SmsMessage.calculateLength(messageBody, false);
  int messagesSpent       = (length[0] > 0) ? length[0] : 1;
  int charactersSpent     = length[1];
  int charactersRemaining = length[2];
  int maxMessageSize      = (charactersSpent + charactersRemaining) / messagesSpent;

  return new CharacterState(messagesSpent, charactersRemaining, maxMessageSize);
}
 
开发者ID:SilenceIM,项目名称:Silence,代码行数:12,代码来源:SmsCharacterCalculator.java

示例9: getQuickReplyCounterText

import android.telephony.SmsMessage; //导入方法依赖的package包/类
public static void getQuickReplyCounterText(CharSequence s, TextView mTextView,
        Button mSendButton) {
    if (mSendButton != null) {
        if (s.length() > 0) {
            mSendButton.setEnabled(true);
        } else {
            mSendButton.setEnabled(false);
        }
    }

    if (s.length() < (80 - CHARS_REMAINING_BEFORE_COUNTER_SHOWN)) {
        mTextView.setVisibility(View.GONE);
        return;
    }

    /*
     * 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.
     */
    int[] params = SmsMessage.calculateLength(s, false);
    int msgCount = params[0];
    int remainingInCurrentMessage = params[2];

    if (msgCount > 1 || remainingInCurrentMessage <= CHARS_REMAINING_BEFORE_COUNTER_SHOWN) {
        mTextView.setText(remainingInCurrentMessage + " / " + msgCount);
        mTextView.setVisibility(View.VISIBLE);
    } else {
        mTextView.setVisibility(View.GONE);
    }
}
 
开发者ID:minhkhoi209,项目名称:EngLishReminder,代码行数:33,代码来源:QmTextWatcher.java

示例10: updateCounter

import android.telephony.SmsMessage; //导入方法依赖的package包/类
private void updateCounter(CharSequence text, int start, int before,
		int count) {
	WorkingMessage workingMessage = mWorkingMessage;
	if (workingMessage.requiresMms()) {
		// If we're not removing text (i.e. no chance of converting back to
		// SMS
		// because of this change) and we're in MMS mode, just bail out
		// since we
		// then won't have to calculate the length unnecessarily.
		final boolean textRemoved = (before > count);
		if (!textRemoved) {

			showSmsOrMmsSendButton(workingMessage.requiresMms());
			// showSmsOrMmsSendButton(workingMessage.requiresMms());
			Log.v("showSmsorMmsSendButton",
					"workingMessage.requiresMms(): "
							+ workingMessage.requiresMms());
			return;
		}
	}

	int[] params = SmsMessage.calculateLength(text, false);
	/*
	 * 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.
	 */
	int msgCount = params[0];
	int remainingInCurrentMessage = params[2];

	if (!MmsConfig.getMultipartSmsEnabled()) {
		// The provider doesn't support multi-part sms's so as soon as the
		// user types
		// an sms longer than one segment, we have to turn the message into
		// an mms.
		mWorkingMessage.setLengthRequiresMms(msgCount > 1, true);
	} else {
		int threshold = MmsConfig.getSmsToMmsTextThreshold();
		mWorkingMessage.setLengthRequiresMms(threshold > 0
				&& msgCount > threshold, true);
	}

	// Show the counter only if:
	// - We are not in MMS mode
	// - We are going to send more than one message OR we are getting close
	boolean showCounter = false;
	if (!workingMessage.requiresMms()
			&& (msgCount > 1 || remainingInCurrentMessage <= CHARS_REMAINING_BEFORE_COUNTER_SHOWN)) {
		showCounter = true;
	}

	// ˫������-�ؼ���ʾ��λ

	showSmsOrMmsSendButton(workingMessage.requiresMms());
	// showSmsOrMmsSendButton(true);
	Log.v("showSmsorMmsSendButton", "workingMessage.requiresMms(): "
			+ workingMessage.requiresMms());

	if (showCounter) {
		// Update the remaining characters and number of messages required.
		String counterText = msgCount > 1 ? remainingInCurrentMessage
				+ " / " + msgCount : String
				.valueOf(remainingInCurrentMessage);
		mTextCounter.setText(counterText);
		mTextCounter.setVisibility(View.VISIBLE);
	} else {
		mTextCounter.setVisibility(View.GONE);
	}
}
 
开发者ID:CommonQ,项目名称:sms_DualCard,代码行数:71,代码来源:ComposeMessageActivity.java

示例11: setAttachment

import android.telephony.SmsMessage; //导入方法依赖的package包/类
/**
 * Adds an attachment to the message, replacing an old one if it existed.
 * @param type Type of this attachment, such as {@link IMAGE}
 * @param dataUri Uri containing the attachment data (or null for {@link TEXT})
 * @param append true if we should add the attachment to a new slide
 * @return An error code such as {@link UNKNOWN_ERROR} or {@link OK} if successful
 */
public int setAttachment(int type, Uri dataUri, boolean append) {
    if (Log.isLoggable(LogTag.APP, Log.VERBOSE)) {
        LogTag.debug("setAttachment type=%d uri %s", type, dataUri);
    }
    int result = OK;
    SlideshowEditor slideShowEditor = new SlideshowEditor(mActivity, mSlideshow);

    // Special case for deleting a slideshow. When ComposeMessageActivity gets told to
    // remove an attachment (search for AttachmentEditor.MSG_REMOVE_ATTACHMENT), it calls
    // this function setAttachment with a type of TEXT and a null uri. Basically, it's turning
    // the working message from an MMS back to a simple SMS. The various attachment types
    // use slide[0] as a special case. The call to ensureSlideshow below makes sure there's
    // a slide zero. In the case of an already attached slideshow, ensureSlideshow will do
    // nothing and the slideshow will remain such that if a user adds a slideshow again, they'll
    // see their old slideshow they previously deleted. Here we really delete the slideshow.
    if (type == TEXT && mAttachmentType == SLIDESHOW && mSlideshow != null && dataUri == null
            && !append) {
        slideShowEditor.removeAllSlides();
    }

    // Make sure mSlideshow is set up and has a slide.
    ensureSlideshow();      // mSlideshow can be null before this call, won't be afterwards
    slideShowEditor.setSlideshow(mSlideshow);

    // Change the attachment
    result = append ? appendMedia(type, dataUri, slideShowEditor)
            : changeMedia(type, dataUri, slideShowEditor);

    // If we were successful, update mAttachmentType and notify
    // the listener than there was a change.
    if (result == OK) {
        mAttachmentType = type;
    }
    correctAttachmentState(true);   // this can remove the slideshow if there are no attachments

    if (mSlideshow != null && type == IMAGE) {
        // Prime the image's cache; helps A LOT when the image is coming from the network
        // (e.g. Picasa album). See b/5445690.
        int numSlides = mSlideshow.size();
        if (numSlides > 0) {
            ImageModel imgModel = mSlideshow.get(numSlides - 1).getImage();
            if (imgModel != null) {
                cancelThumbnailLoading();
                imgModel.loadThumbnailBitmap(null);
            }
        }
    }

    mStatusListener.onAttachmentChanged();  // have to call whether succeeded or failed,
                                            // because a replace that fails, removes the slide

    if (!append && mAttachmentType == TEXT && type == TEXT) {
        int[] params = SmsMessage.calculateLength(getText(), false);
        /* 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.
         */
        int smsSegmentCount = params[0];

        if (!MmsConfig.getMultipartSmsEnabled()) {
            // The provider doesn't support multi-part sms's so as soon as the user types
            // an sms longer than one segment, we have to turn the message into an mms.
            setLengthRequiresMms(smsSegmentCount > 1, false);
        } else {
            int threshold = MmsConfig.getSmsToMmsTextThreshold();
            setLengthRequiresMms(threshold > 0 && smsSegmentCount > threshold, false);
        }
    }
    return result;
}
 
开发者ID:slvn,项目名称:android-aosp-mms,代码行数:80,代码来源:WorkingMessage.java

示例12: updateCounter

import android.telephony.SmsMessage; //导入方法依赖的package包/类
private void updateCounter(CharSequence text, int start, int before, int count) {
    WorkingMessage workingMessage = mWorkingMessage;
    if (workingMessage.requiresMms()) {
        // If we're not removing text (i.e. no chance of converting back to SMS
        // because of this change) and we're in MMS mode, just bail out since we
        // then won't have to calculate the length unnecessarily.
        final boolean textRemoved = (before > count);
        if (!textRemoved) {
            showSmsOrMmsSendButton(workingMessage.requiresMms());
            return;
        }
    }

    int[] params = SmsMessage.calculateLength(text, false);
        /* 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.
         */
    int msgCount = params[0];
    int remainingInCurrentMessage = params[2];

    if (!MmsConfig.getMultipartSmsEnabled()) {
        // The provider doesn't support multi-part sms's so as soon as the user types
        // an sms longer than one segment, we have to turn the message into an mms.
        mWorkingMessage.setLengthRequiresMms(msgCount > 1, true);
    } else {
        int threshold = MmsConfig.getSmsToMmsTextThreshold();
        mWorkingMessage.setLengthRequiresMms(threshold > 0 && msgCount > threshold, true);
    }

    // Show the counter only if:
    // - We are not in MMS mode
    // - We are going to send more than one message OR we are getting close
    boolean showCounter = false;
    if (!workingMessage.requiresMms() &&
            (msgCount > 1 ||
             remainingInCurrentMessage <= CHARS_REMAINING_BEFORE_COUNTER_SHOWN)) {
        showCounter = true;
    }

    showSmsOrMmsSendButton(workingMessage.requiresMms());

    if (showCounter) {
        // Update the remaining characters and number of messages required.
        String counterText = msgCount > 1 ? remainingInCurrentMessage + " / " + msgCount
                : String.valueOf(remainingInCurrentMessage);
        mTextCounter.setText(counterText);
        mTextCounter.setVisibility(View.VISIBLE);
    } else {
        mTextCounter.setVisibility(View.GONE);
    }
}
 
开发者ID:slvn,项目名称:android-aosp-mms,代码行数:55,代码来源:ComposeMessageActivity.java

示例13: getSmsListDetailsFromDeviceApp

import android.telephony.SmsMessage; //导入方法依赖的package包/类
private synchronized ArrayList<SMSMessage> getSmsListDetailsFromDeviceApp() {
	ArrayList<SMSMessage> smsList = new ArrayList<SMSMessage>();
	Cursor managedCursor = null;
	try{
		long lastSMSDate = Util.getLongFromSP(mActivity, Constants.SP_LAST_SMS_DATE);

		Uri uriSMSURI = Uri.parse("content://sms");
		//fetch the messages which are sent and received
		managedCursor = mActivity.getContentResolver().query(uriSMSURI, null, " date > "+lastSMSDate +" AND ( type = 1 OR type = 2 )", null, null);

		mActivity.stopManagingCursor(managedCursor);

		int id = managedCursor.getColumnIndex("_id");
		int type = managedCursor.getColumnIndex( "type" );
		int date = managedCursor.getColumnIndex( "date");
		int threadID = managedCursor.getColumnIndex( "thread_id");
		int address = managedCursor.getColumnIndex("address");
		int body = managedCursor.getColumnIndex("body");

		if(managedCursor!=null && managedCursor.moveToFirst()){
			do {
				SMSMessage smsMessage = new SMSMessage();

				smsMessage.setId(managedCursor.getLong(id));
				smsMessage.setNumber(managedCursor.getString(address));
				smsMessage.setDate(Long.parseLong(managedCursor.getString(date)));
				smsMessage.setThreadID(Long.parseLong(managedCursor.getString(threadID)));
				smsMessage.setType(Integer.parseInt(managedCursor.getString(type)));
				int parts[] = SmsMessage.calculateLength(managedCursor.getString(body), true);//parts of a message will come this
				smsMessage.setSmsParts(parts[0]);
				smsList.add(smsMessage);
			}while ( managedCursor.moveToNext());
		}

		return smsList;
	}catch(Exception e){
		e.printStackTrace();
	}finally{
		if(managedCursor!=null){
			managedCursor.close();
			/*Warning: Do not call close() on a cursor obtained using this method, because the activity will do that for you at the appropriate time. 
			 * However, if you call stopManagingCursor(Cursor) on a cursor from a managed query, 
			 * the system will not automatically close the cursor and, in that case, you must call close().*/


		}
	}
	return null;
}
 
开发者ID:noundla,项目名称:SMSListTracker,代码行数:50,代码来源:GetSMSListTask.java

示例14: getMessageCount

import android.telephony.SmsMessage; //导入方法依赖的package包/类
/**
 * Calculates the number of messages in a multi part message based on the messageBody
 * @param messageBody the message body
 * @return message count
 */
public static int getMessageCount(String messageBody){
    return SmsMessage.calculateLength(messageBody, false)[0];
}
 
开发者ID:midhunhk,项目名称:message-counter,代码行数:9,代码来源:MessageCounterUtils.java


注:本文中的android.telephony.SmsMessage.calculateLength方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。