안드로이드 개발의 간단한 문자 조작 모듈
먼저 문자 실체 클래스를 복원하기 위해 추상 클래스로 만들고 구체적인 프로젝트에서 이 추상 클래스를 계승하면 된다.
public abstract class Message implements Serializable{
private String number;
//private int playTime;
private int id;
private String userName;
private String messageText;
private String time;
public Message(String number, int playTime, int id, String userName,
String messageText, String time) {
super();
this.number = number;
// this.playTime = playTime;
this.id = id;
this.userName = userName;
this.messageText = messageText;
this.time = time;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getMessageText() {
return messageText;
}
public void setMessageText(String messageText) {
this.messageText = messageText;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return " :"+this.number+", :"+this.userName+", :"
+this.id+", :"+this.messageText;
}
}
몇 개의 문자메시지에 필요한 데이터를 구성원 변수로 가지고 다시 tostring 방법을 사용합니다.
핵심 조작 유형,MessageUtils는 문자 발송 방법을 가지고 발송이 끝난 후에 문자 메시지를 저장하는 것, 문자 발송의 성공 여부, 수신의 성공 여부 상태에 대한 피드백 기능을 포함하여 단일 문자 메시지와 모든 문자 수령에 대외 인터페이스를 제공하여 사용할 때 매우 편리하다.
public class MessageUtils {
//private Message message;
private Context context;
private String SENT_SMS_ACTION = "SENT_SMS_ACTION";
private String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";
// Intent
private Intent sentIntent;
private PendingIntent sentPI;
// Intent
private Intent deliverIntent;
private PendingIntent deliverPI;
public MessageUtils(Context context) {
super();
this.context = context;
sentIntent = new Intent(SENT_SMS_ACTION);
deliverIntent = new Intent(DELIVERED_SMS_ACTION);
}
/**
*
* @param message
* @return
* @throws IOException
*/
private String serialize(Message message) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(
byteArrayOutputStream);
objectOutputStream.writeObject(message);
String serStr = byteArrayOutputStream.toString("ISO-8859-1");
serStr = java.net.URLEncoder.encode(serStr, "UTF-8");
objectOutputStream.close();
byteArrayOutputStream.close();
return serStr;
}
/**
*
*
* @param str
* @return
* @throws IOException
* @throws ClassNotFoundException
*/
private Message deSerialization(String str) throws IOException,
ClassNotFoundException {
if(str == null || str == ""){
return null;
}
String redStr = java.net.URLDecoder.decode(str, "UTF-8");
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(
redStr.getBytes("ISO-8859-1"));
ObjectInputStream objectInputStream = new ObjectInputStream(
byteArrayInputStream);
Message message = (Message) objectInputStream.readObject();
objectInputStream.close();
byteArrayInputStream.close();
return message;
}
/**
*
* @param strObject String
* @param num
*/
private void saveMessage(Message message,int num) {
String strObject;
try {
String i = String.valueOf(num);
strObject = serialize(message);
SharedPreferences sp = context.getSharedPreferences("Message", 0);
Editor edit = sp.edit();
edit.putString(i, strObject);
edit.commit();
//
setSmsCount(num);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
* @param num
*/
public void deleteMessage(int num) {
int sum = getSmsCount();
if(sum == num){
setSmsCount(--sum);
return;
}
for(int i = num;i < sum;i++ ){
Message message = getMessage(i+1);
saveMessage(message, i);
}
// int count = getSmsCount();
// setSmsCount(--count);
}
/**
*
* @param num
* @return
*/
public Message getMessage(int num) {
SharedPreferences sp = context.getSharedPreferences("Message", 0);
Message message;
String i = String.valueOf(num);
try {
message = deSerialization(sp.getString(i, null));
return message;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
/**
*
* @return
*/
public List<Message> getAllMessage() {
List<Message> messages = new ArrayList<Message>();
for(int i = 1;i <= getSmsCount();i++){
Message message = getMessage(i);
messages.add(message);
}
return messages;
}
/**
* , ,
* @param messageText
* @param num
*/
public void sendMessage(Message message){
SmsManager smsManager = SmsManager.getDefault();
sentPI = PendingIntent.getBroadcast(context, 0, sentIntent, 0);
deliverPI = PendingIntent.getBroadcast(context, 0, deliverIntent, 0);
regSendBroadcast();
regRecBroadcast();
List<String> divideContents = smsManager.divideMessage(message.getMessageText());
for (String text : divideContents) {
smsManager.sendTextMessage(message.getNumber(), null, text, sentPI, deliverPI);
}
int count = getSmsCount();
//
saveMessage(message, ++count);
}
/**
* , ,
*/
private void regSendBroadcast(){
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context _context, Intent _intent) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(context,
" ", Toast.LENGTH_SHORT)
.show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(context,
" ", Toast.LENGTH_SHORT)
.show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(context,
" ", Toast.LENGTH_SHORT)
.show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(context,
" ", Toast.LENGTH_SHORT)
.show();
break;
}
}
}, new IntentFilter(SENT_SMS_ACTION));
}
/**
* ,
*/
private void regRecBroadcast(){
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context _context, Intent _intent) {
Toast.makeText(context,
" ", Toast.LENGTH_SHORT)
.show();
}
}, new IntentFilter(DELIVERED_SMS_ACTION));
}
/**
*
* @param count
*/
private void setSmsCount(int count) {
SharedPreferences sp = context.getSharedPreferences("Message", 0);
Editor edit = sp.edit();
edit.putInt("smsCount", count);
edit.commit();
}
/**
*
* @return
*/
public int getSmsCount() {
SharedPreferences sp = context.getSharedPreferences("Message", 0);
int count = sp.getInt("smsCount", 0);
return count;
}
}
대상의 서열화와 반서열화를 사용하여 하나의 메시지 대상을 String 대상으로 전환시켜SharePreference에 저장하고 키 값은 문자의 번호입니다.이 번호를 통해 지정된 문자메시지를 조회하거나 삭제할 수 있다.
이렇게 한 항목이 문자 조작이 필요하고 문자 메시지를 저장해야 할 때 이 작은 모듈을 사용할 수 있다. 단지 하나의 Message Utils 대상만 있으면 그의 public 방법을 호출하면 문자 조작을 편리하게 할 수 있고 대상을 대상으로 하는 고중합 저결합, 복용 가능한 디자인 원칙에 부합된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.