android - How to send text using AlarmManager and broadcast receiver? -
i writing app takes in edittext data user , sets alarm data collected using alarmmanager , send text using broadcast receiver. small toast stating alarm has been set works know data being gathered correctly never receive text. happening?
here main activity collect data , set alarm:
import java.util.calendar; import android.os.bundle; import android.app.activity; import android.app.alarmmanager; import android.app.pendingintent; import android.content.context; import android.content.intent; import android.view.menu; import android.view.view; import android.widget.edittext; import android.widget.toast; public class mainactivity extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } @override public boolean oncreateoptionsmenu(menu menu) { getmenuinflater().inflate(r.menu.main, menu); return true; } public void schedulealarm(view v) { edittext timefield = (edittext) findviewbyid(r.id.edittext1); int time = integer.parseint(timefield.gettext().tostring()); edittext dayfield = (edittext) findviewbyid(r.id.edittext2); int day = integer.parseint(dayfield.gettext().tostring()); edittext monthfield = (edittext) findviewbyid(r.id.edittext3); int month = integer.parseint(monthfield.gettext().tostring()); calendar calendar = calendar.getinstance(); calendar.set(calendar.month, month); calendar.set(calendar.day_of_month, day); calendar.set(calendar.hour_of_day, time); calendar.set(calendar.minute, 0); calendar.set(calendar.second, 0); intent intentalarm = new intent(this, alarmreciever.class); pendingintent pintent = pendingintent.getbroadcast(this.getapplicationcontext(), 234324243, intentalarm, pendingintent.flag_update_current); alarmmanager alarmmanager = (alarmmanager) getsystemservice(context.alarm_service); alarmmanager.set(alarmmanager.rtc_wakeup, calendar.gettimeinmillis(), pintent); toast.maketext(this, ("alarm scheduled " + month + "/" + day + " @ " + time + "pm"), toast.length_long).show(); } }
here broadcast reciever:
import android.content.broadcastreceiver; import android.content.context; import android.content.intent; import android.telephony.smsmanager; public class alarmreciever extends broadcastreceiver { @override public void onreceive(context context, intent intent) { string phonenumberreciver="0000000000"; //my phone number entered here string message="hi there later, see soon"; smsmanager sms = smsmanager.getdefault(); sms.sendtextmessage(phonenumberreciver, null, message, null, null); } }
i have made sure edit manifest these permissions:
<uses-permission android:name="com.android.alarm.permission.set_alarm"/> <uses-permission android:name="android.permission.send_sms"/> <receiver android:name=".alarmreciever"/>
but here whole xml:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.bpa" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="11" android:targetsdkversion="18" /> <uses-permission android:name="com.android.alarm.permission.set_alarm"/> <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.example.bpa.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=".alarmreciever"/> </application> </manifest>
try declaring receiver in manifest qualified package name:
<receiver android:name="com.myapp.alarmreciever"/>
if still doesn't work may need specify action receiver handles, , when create alarm intent, set action intent. e.g:
<receiver android:name="alarmreceiver" > <intent-filter> <action android:name="com.myapp.mybroadcast" /> </intent-filter> </receiver> intent intentalarm = new intent(this, alarmreciever.class); intent.setaction("com.myapp.mybroadcast");
Comments
Post a Comment