Gữi và nhận tin nhắnCó nhiều ứng dụng đòi hỏi nhắn tin tự động cho 1 điện thoại khác hay nhận tin nhắn từ 1 điện thoại khác.. Trong bài viết này mình sẽ làm 1 ứng dụng dùng để nhắn tin
Trang 1Gữi và nhận tin nhắn
Có nhiều ứng dụng đòi hỏi nhắn tin tự động cho 1 điện thoại khác hay nhận tin nhắn từ
1 điện thoại khác Trong bài viết này mình sẽ làm 1 ứng dụng dùng để nhắn tin và 1 ứng dụng dùng để đọc bất cứ tin nhắn nào nhắn đến máy mình.
+ Ứng dụng nhắn tin làm theo các bước sau:
1/ Tạo Project :
Project name: TelephonyDemo
Build Target: Android 2.3.3
Application name: TelephonyDemo
Package name: com.dac.TelephonyDemo
Create Activity: TelephonyDemo
2/ Trong file main.xml các bạn thiết kế như sau:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Destination Address:" />
<EditText android:id="@+id/addrEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:phoneNumber="true" android:text="" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
Trang 2<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Text Message:"
/>
<EditText android:id="@+id/msgEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="hello sms" />
</LinearLayout>
<Button android:id="@+id/sendSmsBtn" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Send Text Message"
android:onClick="doSend" />
</LinearLayout>
3/ Trong Package các bạn tạo thêm 1 class MySMSMonitor.java :
package com.dac.TelephonyDemo
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
import android.util.Log;
public class MySMSMonitor extends BroadcastReceiver {
private static final String ACTION =
"android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent)
{
ACTION.compareToIgnoreCase(intent.getAction())==0)
{
Object[]pduArray = (Object[]) intent.getExtras().get("pdus");
Log.d("MySMSMonitor", "From: " +
messages[i].getOriginatingAddress());
Log.d("MySMSMonitor", "Msg: " + messages[i].getMessageBody());
}
Log.d("MySMSMonitor","SMS Message Received.");
}
}
Trang 34/ trong file TelephonyDemo.java ta code như sau:
package com.dac.TelephonyDemo
import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class TelephonyDemo extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.main);
}
public void doSend(View view) {
EditText addrTxt =
(EditText)findViewById(R.id.addrEditText);
EditText msgTxt =
(EditText)findViewById(R.id.msgEditText);
sendSmsMessage(
msgTxt.getText().toString());
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
}
private void sendSmsMessage(String address,String message)throws Exception {
SmsManager smsMgr = SmsManager.getDefault();
}
Trang 4Và thêm nữa trong file AndroidManifest.xml ta thêm vào Permission cho phép nhận và gữi SMS:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dac.TelephonyDemo" android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".TelephonyDemo"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<receiver android:name="MySMSMonitor">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
</manifest>
Vậy ta đã làm xong ứng dụng gữi tin nhắn Ta làm tiếp ứng dụng nhận tin nhắn như sau:
1/Các bạn tạo 1 Project:
Project name: SMSFolders
Build Target: Android 2.3.3
Application name: SMSFolders
Package name: com.dac.SMSFolders
Create Activity: SMSInboxDemo
Trang 52/ Các bạn đổi tên file layout main.xml lại thành sms_inbox.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
>
</LinearLayout>
3/ Các bạn code file chính SMSInboxDemo.java như sau:
package com.dac.SMSFolders;
import android.app.ListActivity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.SimpleCursorAdapter;
public class SMSInboxDemo extends ListActivity {
private ListAdapter adapter;
private static final Uri SMS_INBOX = Uri.parse("content://sms/inbox");
@Override
public void onCreate(Bundle bundle) {
Cursor c = getContentResolver()
startManagingCursor(c);
names);
}
}
Và tương tự ứng dụng trên các bạn cũng thêm Permission vào AndroidManifest.xml:
Trang 6package="com.dac.SMSFolders"
<intent-filter>
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
</manifest>
Cuối cùng các bạn debug ứng dụng trên 2 Virtual Devices khác nhau và xem kết quả:
Gữi:
Trang 7Nhận:
Trang 8mong nhận được sự phản hồi từ các bạn