0% found this document useful (0 votes)
21 views9 pages

Ex 29

The document outlines the implementation of an SMS application using Android, including XML layouts for the main activity, SMS inbox, and SMS sending interfaces. It provides Java code for handling SMS sending and receiving functionalities, along with the necessary permissions in the AndroidManifest.xml file. The application allows users to compose and view SMS messages through a graphical user interface.

Uploaded by

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

Ex 29

The document outlines the implementation of an SMS application using Android, including XML layouts for the main activity, SMS inbox, and SMS sending interfaces. It provides Java code for handling SMS sending and receiving functionalities, along with the necessary permissions in the AndroidManifest.xml file. The application allows users to compose and view SMS messages through a graphical user interface.

Uploaded by

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

X.

Exercise
1. Write a program to send and receive SMS, make use of following GUI.

activity_main.xml android:onClick="goToInbox"
android:text="Inbox" />
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout <Button
xmlns:android="http://schemas.android.com/apk/r
android:id="@+id/btnCompose"
es/android"
android:layout_width="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_below="@+id/textView2"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:background="#FFFFFF"
android:layout_marginTop="149dp"
tools:context=".MainActivity">
android:layout_marginEnd="159dp"
android:onClick="goToCompose"
<TextView
android:text="Compose" />
android:id="@+id/textView2"
android:layout_width="wrap_content"
</RelativeLayout>
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
MainActivity.java
android:layout_centerHorizontal="true"
package com.example.ex2901;
android:layout_marginTop="101dp"
android:capitalize="characters"
import
android:text="Android SMS"
androidx.appcompat.app.AppCompatActivity;
android:textSize="34dp" />
import android.content.Intent;
import android.view.View;
<Button
import android.os.Bundle;
android:id="@+id/btnInbox"
android:layout_width="wrap_content"
public class MainActivity extends
android:layout_height="wrap_content" AppCompatActivity {
android:layout_below="@+id/btnCompose"
android:layout_alignParentStart="true" @Override
android:layout_marginStart="160dp" protected void onCreate(Bundle
savedInstanceState) {
android:layout_marginTop="20dp"
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); android:id="@+id/textView"
} android:layout_gravity="center_horizontal"
/>

public void goToInbox(View view) {


<ListView android:id="@+id/SMSList"
Intent intent = new Intent(MainActivity.this,
ReceiveSMSActivity.class); android:layout_height="389dp"
startActivity(intent); android:layout_width="match_parent"
} android:layout_margin="5dp"
android:layout_weight="0.79" />
public void goToCompose(View view) {
Intent intent = new Intent(MainActivity.this, <Button
SendSMSActivity.class);
android:layout_width="wrap_content"
startActivity(intent);
android:layout_height="wrap_content"
}
android:text="Compose"
}
android:id="@+id/btnCompose"
android:layout_gravity="center_horizontal"
activity_receive_sms.xml
android:onClick="goToCompose" />

<?xml version="1.0" encoding="utf-8"?>


</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/r
es/android" ReceiveSMSActivity.java
android:orientation="vertical"
android:layout_width="fill_parent"
package com.example.ex2901;
android:layout_height="fill_parent"
android:id="@+id/MainLayout"
android:weightSum="1" import
androidx.appcompat.app.AppCompatActivity;
android:background="#ffcecbff">
import android.content.ContentResolver;
import android.content.Intent;
<TextView
import android.database.Cursor;
android:layout_width="wrap_content"
import android.net.Uri;
android:layout_height="wrap_content"
import android.view.View;

android:textAppearance="?android:attr/textAppea import android.widget.AdapterView;


ranceMedium" import
android:text="SMS Inbox" android.widget.AdapterView.OnItemClickListene
r;
import android.widget.ArrayAdapter; arrayAdapter = new
ArrayAdapter<String>(this,
import android.widget.ListView;
android.R.layout.simple_list_item_1,
import android.widget.Toast; smsMessagesList);

import java.text.SimpleDateFormat; smsListView.setAdapter(arrayAdapter);

import java.util.ArrayList; smsListView.setOnItemClickListener(this);

import java.util.Date;
import android.os.Bundle; refreshSmsInbox();
}

public class ReceiveSMSActivity extends


AppCompatActivity implements
public void refreshSmsInbox() {
OnItemClickListener{
ContentResolver contentResolver =
getContentResolver();
private static ReceiveSMSActivity inst;
Cursor smsInboxCursor =
ArrayList<String> smsMessagesList = new contentResolver.query(Uri.parse("content://sms/in
ArrayList<String>(); box"), null, null, null, null);

ListView smsListView; int indexBody =


smsInboxCursor.getColumnIndex("body");
ArrayAdapter arrayAdapter;
int indexAddress =
smsInboxCursor.getColumnIndex("address");
public static ReceiveSMSActivity instance() { long timeMillis =
return inst; smsInboxCursor.getColumnIndex("date");

} Date date = new Date(timeMillis);


SimpleDateFormat format = new
SimpleDateFormat("dd/MM/yy");
@Override
String dateText = format.format(date);
public void onStart() {
super.onStart();
if (indexBody < 0 ||
inst = this; !smsInboxCursor.moveToFirst()) return;
} arrayAdapter.clear();
do {
@Override String str =
protected void onCreate(Bundle smsInboxCursor.getString(indexAddress) +" at "+
savedInstanceState) { "\n" +
super.onCreate(savedInstanceState); smsInboxCursor.getString(indexBody)
+dateText+ "\n";

setContentView(R.layout.activity_receive_sms); arrayAdapter.add(str);

smsListView = (ListView) } while (smsInboxCursor.moveToNext());


findViewById(R.id.SMSList);
} activity_send_sms.xml

public void updateList(final String smsMessage) <?xml version="1.0" encoding="utf-8"?>


{
<LinearLayout
arrayAdapter.insert(smsMessage, 0); xmlns:android="http://schemas.android.com/apk/r
es/android"
arrayAdapter.notifyDataSetChanged();
android:layout_width="fill_parent"
}
android:layout_height="fill_parent"
android:orientation="vertical"
public void onItemClick(AdapterView<?>
parent, View view, int pos, long id) { android:background="#fffff9da">
try {
String[] smsMessages = <TextView
smsMessagesList.get(pos).split("\n");
android:layout_width="wrap_content"
String address = smsMessages[0];
android:layout_height="wrap_content"
String smsMessage = "";
for (int i = 1; i < smsMessages.length; ++i) android:textAppearance="?android:attr/textAppea
{ ranceLarge"
smsMessage += smsMessages[i]; android:text="Compose New Message"
} android:id="@+id/textView3"
android:layout_gravity="center_horizontal"
/>
String smsMessageStr = address + "\n";
smsMessageStr += smsMessage;
<TextView
Toast.makeText(this, smsMessageStr,
Toast.LENGTH_SHORT).show(); android:id="@+id/textViewPhoneNo"
} catch (Exception e) { android:layout_width="wrap_content"
e.printStackTrace(); android:layout_height="wrap_content"
} android:text="Phone Number" />
}
<EditText
public void goToCompose(View view) { android:id="@+id/editTextPhoneNo"
Intent intent = new android:layout_width="fill_parent"
Intent(ReceiveSMSActivity.this,
android:layout_height="wrap_content"
SendSMSActivity.class);
android:inputType="phone"/>
startActivity(intent);
}
<TextView
}
android:id="@+id/textViewMessage" SendSMSActivity.java
android:layout_width="wrap_content"
android:layout_height="wrap_content" package com.example.ex2901;
android:text="SMS Message" />
import
androidx.appcompat.app.AppCompatActivity;
<EditText
import android.content.Intent;
android:id="@+id/editTextSMS"
import android.os.Bundle;
android:layout_width="fill_parent"
import android.telephony.SmsManager;
android:layout_height="wrap_content"
import android.view.View;
android:inputType="textMultiLine"/>
import android.widget.Button;
import android.widget.EditText;
<Button
import android.widget.Toast;
android:layout_width="wrap_content"
android:layout_height="wrap_content"
public class SendSMSActivity extends
android:text="Send SMS"
AppCompatActivity {
android:id="@+id/btnSendSMS"
android:layout_gravity="center_horizontal"
Button sendSMSBtn;
/>
EditText toPhoneNumberET;
EditText smsMessageET;
<Button
android:id="@+id/btnInbox"
@Override
android:layout_width="wrap_content"
protected void onCreate(Bundle
android:layout_height="wrap_content"
savedInstanceState) {
super.onCreate(savedInstanceState);
android:layout_gravity="center|center_horizontal"
android:onClick="goToInbox"
setContentView(R.layout.activity_send_sms);
android:text="Inbox" />

sendSMSBtn = (Button)
</LinearLayout> 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) { SMSBroadcastReceiver.java
sendSMS();
} package com.example.ex2901;
});
} import android.content.BroadcastReceiver;
import android.content.Context;
protected void sendSMS() { import android.content.Intent;
String toPhoneNumber = import android.os.Bundle;
toPhoneNumberET.getText().toString();
import android.telephony.SmsMessage;
String smsMessage =
import android.widget.Toast;
smsMessageET.getText().toString();
import java.text.SimpleDateFormat;
try {
import java.util.Date;
SmsManager smsManager =
SmsManager.getDefault();

public class SMSBroadcastReceiver extends


smsManager.sendTextMessage(toPhoneNumber, BroadcastReceiver {
null, smsMessage, null, null);
Toast.makeText(getApplicationContext(),
"SMS sent.", public static final String SMS_BUNDLE =
"pdus";
Toast.LENGTH_LONG).show();
} catch (Exception e) {
public void onReceive(Context context, Intent
Toast.makeText(getApplicationContext(), intent) {
"Sending SMS failed.", Bundle intentExtras = intent.getExtras();
Toast.LENGTH_LONG).show(); if (intentExtras != null) {
Object[] sms = (Object[])
intentExtras.get(SMS_BUNDLE);
}
String smsMessageStr = "";
}
for (int i = 0; i < sms.length; ++i) {
SmsMessage smsMessage =
public void goToInbox(View view) {
SmsMessage.createFromPdu((byte[]) sms[i]);
Intent intent = new
Intent(SendSMSActivity.this,
ReceiveSMSActivity.class); String smsBody =
smsMessage.getMessageBody().toString();
startActivity(intent);
String address =
}
smsMessage.getOriginatingAddress();
}
long timeMillis =
smsMessage.getTimestampMillis();
<uses-permission
android:name="android.permission.SEND_SMS"
Date date = new Date(timeMillis);
/>
SimpleDateFormat format = new
SimpleDateFormat("dd/MM/yy");
<application
String dateText = format.format(date);
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
smsMessageStr += address + " at " + "\t"
+ dateText + "\n"; android:label="@string/app_name"
smsMessageStr += smsBody + "\n";
android:roundIcon="@mipmap/ic_launcher_roun
}
d"
Toast.makeText(context, smsMessageStr,
android:supportsRtl="true"
Toast.LENGTH_SHORT).show();
android:theme="@style/Theme.EX2901">
<activity
//this will update the UI with message
android:name=".SendSMSActivity"
ReceiveSMSActivity inst =
ReceiveSMSActivity.instance(); android:exported="false" />
inst.updateList(smsMessageStr); <activity
} android:name=".ReceiveSMSActivity"
} android:exported="false" />
} <activity
android:name=".MainActivity"
AndroidManifest.xml android:exported="true">
<intent-filter>
<?xml version="1.0" encoding="utf-8"?> <action
android:name="android.intent.action.MAIN" />
<manifest
xmlns:android="http://schemas.android.com/apk/r
es/android"
<category
package="com.example.ex2901"> android:name="android.intent.category.LAUNCH
ER" />
</intent-filter>
<uses-permission
android:name="android.permission.WRITE_SMS </activity>
" />
<uses-permission
<receiver
android:name="android.permission.READ_SMS"
/> android:name=".SMSBroadcastReceiver"
<uses-permission android:exported="true">
android:name="android.permission.RECEIVE_S
MS" /> <intent-filter android:priority="999">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>

</manifest>

Output:

You might also like