0% found this document useful (0 votes)
16 views6 pages

Prog Smsprogram

The document contains the implementation of an Android SMS application with three main activities: MainActivity for navigation, SendSmsActivity for sending SMS messages, and ReceiveSmsActivity for receiving and displaying SMS messages. It also includes a BroadcastReceiver (SmsBroadcastReceiver) to handle incoming SMS messages and update the UI accordingly. The AndroidManifest.xml file specifies necessary permissions and activity declarations for the application.

Uploaded by

spandaa257
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views6 pages

Prog Smsprogram

The document contains the implementation of an Android SMS application with three main activities: MainActivity for navigation, SendSmsActivity for sending SMS messages, and ReceiveSmsActivity for receiving and displaying SMS messages. It also includes a BroadcastReceiver (SmsBroadcastReceiver) to handle incoming SMS messages and update the UI accordingly. The AndroidManifest.xml file specifies necessary permissions and activity declarations for the application.

Uploaded by

spandaa257
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

MainActivity.

java

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

public void goToInbox(View view) {


Intent intent = new Intent(MainActivity.this, ReceiveSmsActivity.class);
startActivity(intent);
}

public void goToCompose(View view) {


Intent intent = new Intent(MainActivity.this, SendSmsActivity.class);
startActivity(intent);
}

}
SendSmsActivity.java
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class SendSmsActivity extends Activity {

Button sendSMSBtn;
EditText toPhoneNumberET;
EditText smsMessageET;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_send_sms);
sendSMSBtn = (Button) findViewById(R.id.btnSendSMS);
toPhoneNumberET = (EditText) findViewById(R.id.editTextPhoneNo);
smsMessageET = (EditText) findViewById(R.id.editTextSMS);
sendSMSBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
sendSMS();
}
});
}

protected void sendSMS() {


String toPhoneNumber = toPhoneNumberET.getText().toString();
String smsMessage = smsMessageET.getText().toString();
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(toPhoneNumber, null, smsMessage, null, null);
Toast.makeText(getApplicationContext(), "SMS sent.",
Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getApplicationContext(),
"Sending SMS failed.",
Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}

public void goToInbox(View view) {


Intent intent = new Intent(SendSmsActivity.this, ReceiveSmsActivity.class);
startActivity(intent);
}
}
ReceiveSmsActivity.java
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

public class ReceiveSmsActivity extends Activity implements OnItemClickListener {


private static ReceiveSmsActivity inst;
ArrayList<String> smsMessagesList = new ArrayList<String>();
ListView smsListView;
ArrayAdapter arrayAdapter;

public static ReceiveSmsActivity instance() {


return inst;
}

@Override
public void onStart() {
super.onStart();
inst = this;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receive_sms);
smsListView = (ListView) findViewById(R.id.SMSList);
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
smsMessagesList);
smsListView.setAdapter(arrayAdapter);
smsListView.setOnItemClickListener(this);

refreshSmsInbox();
}

public void refreshSmsInbox() {


ContentResolver contentResolver = getContentResolver();
Cursor smsInboxCursor = contentResolver.query(Uri.parse("content://sms/inbox"), null, null, null,
null);
int indexBody = smsInboxCursor.getColumnIndex("body");
int indexAddress = smsInboxCursor.getColumnIndex("address");
long timeMillis = smsInboxCursor.getColumnIndex("date");
Date date = new Date(timeMillis);
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yy");
String dateText = format.format(date);

if (indexBody < 0 || !smsInboxCursor.moveToFirst()) return;


arrayAdapter.clear();
do {
String str = smsInboxCursor.getString(indexAddress) +" at "+
"\n" + smsInboxCursor.getString(indexBody) +dateText+ "\n";
arrayAdapter.add(str);
} while (smsInboxCursor.moveToNext());
}
public void updateList(final String smsMessage) {
arrayAdapter.insert(smsMessage, 0);
arrayAdapter.notifyDataSetChanged();
}

public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
try {
String[] smsMessages = smsMessagesList.get(pos).split("\n");
String address = smsMessages[0];
String smsMessage = "";
for (int i = 1; i < smsMessages.length; ++i) {
smsMessage += smsMessages[i];
}

String smsMessageStr = address + "\n";


smsMessageStr += smsMessage;
Toast.makeText(this, smsMessageStr, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
}

public void goToCompose(View view) {


Intent intent = new Intent(ReceiveSmsActivity.this, SendSmsActivity.class);
startActivity(intent);
}
}
smsReceiverBroadast.java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;

import java.text.SimpleDateFormat;
import java.util.Date;

public class SmsBroadcastReceiver extends BroadcastReceiver {

public static final String SMS_BUNDLE = "pdus";

public void onReceive(Context context, Intent intent) {


Bundle intentExtras = intent.getExtras();
if (intentExtras != null) {
Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE);
String smsMessageStr = "";
for (int i = 0; i < sms.length; ++i) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);

String smsBody = smsMessage.getMessageBody().toString();


String address = smsMessage.getOriginatingAddress();
long timeMillis = smsMessage.getTimestampMillis();

Date date = new Date(timeMillis);


SimpleDateFormat format = new SimpleDateFormat("dd/MM/yy");
String dateText = format.format(date);

smsMessageStr += address +" at "+"\t"+ dateText + "\n";


smsMessageStr += smsBody + "\n";
}
Toast.makeText(context, smsMessageStr, Toast.LENGTH_SHORT).show();

//this will update the UI with message


ReceiveSmsActivity inst = ReceiveSmsActivity.instance();
inst.updateList(smsMessageStr);
}
}
}

Manifest file:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.javapapers.android.androidsmsapp">

<uses-permission android:name="android.permission.WRITE_SMS" />


<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />


</intent-filter>
</activity>
<activity
android:name=".ReceiveSmsActivity"
android:label="@string/app_name"></activity>
<activity
android:name=".SendSmsActivity"
android:label="@string/app_name"></activity>
<receiver
android:name=".SmsBroadcastReceiver"
android:exported="true">
<intent-filter android:priority="999">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>

</application>

</manifest>

You might also like