Hi Guys,
Today I am sharing code for sending SMS in android programmatically, in background after every 5 min. For this I am using Alarm Manager. And you can set any number of contact and message, I am using Hash-map for that. Important steps are given below-
1) Create Hash Map for store phone number and messages.
static HashMap<String, String> recorArray = null;
2) Create a receiver i.e. name-AlarmReceiver for sending SMS after every 5 min.
public class AlarmReceiver extends BroadcastReceiver {
private final String SOMEACTION = "com.manish.alarm.ACTION";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (SOMEACTION.equals(action)) {
/**
* call method to send sms
*/
MainActivity.sendSms();
}
}
}
3) Create a AlarmManager which will send SMS after every 5 min.
Intent intent = new Intent(context, AlarmReceiver.class);
intent.setAction("com.manish.alarm.ACTION");
PendingIntent pendingIntent = PendingIntent
.getBroadcast(MainActivity.this, 0, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
AlarmManager alarm = (AlarmManager) MainActivity.this
.getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pendingIntent);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
500000, pendingIntent);
4) Add <uses-permission android:name="android.permission.SEND_SMS" /> in manifest.xml.
5) Add receiver in manifest-
<receiver android:name="com.manish.sendsmsinbackground.AlarmReceiver" >
<intent-filter>
<action android:name="com.manish.alarm.ACTION" />
</intent-filter>
</receiver>
Today I am sharing code for sending SMS in android programmatically, in background after every 5 min. For this I am using Alarm Manager. And you can set any number of contact and message, I am using Hash-map for that. Important steps are given below-
1) Create Hash Map for store phone number and messages.
static HashMap<String, String> recorArray = null;
2) Create a receiver i.e. name-AlarmReceiver for sending SMS after every 5 min.
public class AlarmReceiver extends BroadcastReceiver {
private final String SOMEACTION = "com.manish.alarm.ACTION";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (SOMEACTION.equals(action)) {
/**
* call method to send sms
*/
MainActivity.sendSms();
}
}
}
3) Create a AlarmManager which will send SMS after every 5 min.
Intent intent = new Intent(context, AlarmReceiver.class);
intent.setAction("com.manish.alarm.ACTION");
PendingIntent pendingIntent = PendingIntent
.getBroadcast(MainActivity.this, 0, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
AlarmManager alarm = (AlarmManager) MainActivity.this
.getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pendingIntent);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
500000, pendingIntent);
4) Add <uses-permission android:name="android.permission.SEND_SMS" /> in manifest.xml.
5) Add receiver in manifest-
<receiver android:name="com.manish.sendsmsinbackground.AlarmReceiver" >
<intent-filter>
<action android:name="com.manish.alarm.ACTION" />
</intent-filter>
</receiver>
My Code
1)MainActivity.java-
package
com.manish.sendsmsinbackground;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import
android.app.Activity;
import
android.app.AlarmManager;
import
android.app.PendingIntent;
import
android.content.Context;
import
android.content.Intent;
import android.os.Bundle;
import
android.telephony.SmsManager;
import android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.EditText;
/**
*
* @author manish
*
*/
public class MainActivity extends Activity {
EditText
editTextPhone, editTextMessage;
Button
btnSubmit, btnStart;
String
phoneNumber, message;
static HashMap<String,
String> recorArray = null;
Context
context = MainActivity.this;
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
* get id's fro xml
*/
editTextPhone = (EditText)
findViewById(R.id.editText1);
editTextMessage = (EditText)
findViewById(R.id.editText2);
btnSubmit = (Button)
findViewById(R.id.button1);
btnStart = (Button)
findViewById(R.id.button2);
/**
* create object of hashmap
*/
recorArray = new HashMap<String,
String>();
/**
* button's onclick listner
object
*/
btnSubmit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated
method stub
phoneNumber = editTextPhone.getText().toString();
message = editTextMessage.getText().toString();
recorArray.put(phoneNumber, message);
}
});
btnStart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated
method stub
System.out.println(recorArray);
fireAlarm();
}
});
}
/**
* send sms method
*/
public static void sendSms() {
Set<?>
set = recorArray.entrySet();
// Get an iterator
Iterator<?>
i = set.iterator();
// Display elements
while (i.hasNext()) {
@SuppressWarnings("rawtypes")
Map.Entry
me = (Map.Entry) i.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
try {
SmsManager
smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(me.getKey().toString(),
null, me
.getValue().toString(),
null, null);
System.out.println("message
sent");
}
catch (Exception e) {
System.out.println("sending
failed!");
e.printStackTrace();
}
}
}
public void fireAlarm() {
/**
* call broadcost reciver for
send sms
*/
Intent
intent = new Intent(context, AlarmReceiver.class);
intent.setAction("com.manish.alarm.ACTION");
PendingIntent
pendingIntent = PendingIntent
.getBroadcast(MainActivity.this, 0, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
Calendar
calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
AlarmManager
alarm = (AlarmManager) MainActivity.this
.getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pendingIntent);
alarm.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(),
500000,
pendingIntent);
}
}
2)AlarmReciver.java
package
com.manish.sendsmsinbackground;
import
android.content.BroadcastReceiver;
import
android.content.Context;
import
android.content.Intent;
public class AlarmReceiver extends BroadcastReceiver {
private final String SOMEACTION = "com.manish.alarm.ACTION";
@Override
public void onReceive(Context
context, Intent intent) {
String
action = intent.getAction();
if (SOMEACTION.equals(action)) {
/**
* call method to send sms
*/
MainActivity.sendSms();
}
}
}
3)activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_margin="10dp"
android:hint="phone number"
android:ems="10"
android:inputType="phone"/>
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_below="@+id/editText1"
android:layout_centerHorizontal="true"
android:inputType="textMultiLine"/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText2"
android:layout_below="@+id/editText2"
android:text="Submit" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/button1"
android:layout_marginTop="73dp"
android:text="Start Timer" />
</RelativeLayout>
4)manifest.xml
<?xml version="1.0"
encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.manish.sendsmsinbackground"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.SEND_SMS"
/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.manish.sendsmsinbackground.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>
<receiver android:name="com.manish.sendsmsinbackground.AlarmReceiver"
>
<intent-filter>
<action android:name="com.manish.alarm.ACTION"
/>
</intent-filter>
</receiver>
</application>
</manifest>
Thanks!
Thanks all for your kind support..
ReplyDeletelinking to next page using spinner items??
ReplyDeletewhat you mean raj? do you want open new page using spinner? if yes please see this snip of code-
DeletespinnerBlock = (Spinner) findViewById(R.id.spinner_sector);
ArrayAdapter adapter2 = new ArrayAdapter(this,
android.R.layout.simple_spinner_item, Constant.blockArray);
// array you are populating
adapter2.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinnerBlock.setAdapter(adapter2);
spinnerBlock.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView parent, View v, int pos,
long id) {
// TODO Auto-generated method stub
Intent intent = new Intent(A.this, B.class);
startActivity(intent);
}
@Override
public void onNothingSelected(AdapterView arg0) {
// TODO Auto-generated method stub
}
});
i got this.
ReplyDeletesuppose if i have 3 spinner items.when i clicked one of the spinner item it should go to next page(activity page).same like remaining two spinner items.how do i do that?
item1-->activity1
item2-->activity2
item3-->activity3
help ASAP.
thanku.
thnx for this tutorial buat i have a probléme the sms not sent !! and start timer don't work plz help me for this probléme and thnk u :)
ReplyDeleteany error log?
Deletehello, manish, can you help me how to implement onPasswordfailed() method
ReplyDeleteonPasswodfailed is an android method?
Deleteis it working on actual device ?
ReplyDelete