Android: Sending SMS works on Emulator but NOT on real devices -


updated: have tried code on phone (4.1.2), works perfectly. when tried on phone using 4.4.2, not work, returns "radio off". app set default app handling message fyi.

here activity send sms:

public class viewconversation extends activity { sqlitemanager sql;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.inbox_conversation);      init();     initlistview();     initsendsms(); }  @override public void onbackpressed() {     startactivity(new intent(this, mainlayout.class)); }  private void init() {     sql = new sqlitemanager(this); }  private void initlistview() {     viewconversationadapter adapter = new viewconversationadapter(this, getmessages());     listview lv = (listview) findviewbyid(r.id.lv_conversation);     lv.setadapter(adapter); }  private string[] getmessages() {     bundle b = getintent().getextras();     string fk_conversation_info = b.getstring("fk_conversation_info");     sql.open();     string[] result = sql.getconversationsmss(fk_conversation_info);     sql.close();     return result; }  /* ---------- send sms part ---------- */ private void initsendsms() {     final edittext et_phone = (edittext) findviewbyid(r.id.et_addphonenum);     final edittext et_message = (edittext) findviewbyid(r.id.et_messagebody);      button bt_send = (button) findviewbyid(r.id.bt_send);      bt_send.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             string phonenumber = et_phone.gettext().tostring();             string message = et_message.gettext().tostring();              sendsms(phonenumber, message);         }     }); } private void sendsms(string phonenumber, string message) {     string sent = "sms_sent";     string delivered = "sms_delivered";      pendingintent sentpi = pendingintent.getbroadcast(this, 0,             new intent(sent), pendingintent.flag_update_current);      pendingintent deliveredpi = pendingintent.getbroadcast(this, 0,             new intent(delivered), pendingintent.flag_update_current);      //---when sms has been sent---     registerreceiver(new broadcastreceiver(){         @override         public void onreceive(context arg0, intent arg1) {             switch (getresultcode())             {                 case activity.result_ok:                     toast.maketext(getbasecontext(), "sms sent",                             toast.length_short).show();                     break;                 case smsmanager.result_error_generic_failure:                     toast.maketext(getbasecontext(), "generic failure",                             toast.length_short).show();                     break;                 case smsmanager.result_error_no_service:                     toast.maketext(getbasecontext(), "no service",                             toast.length_short).show();                     break;                 case smsmanager.result_error_null_pdu:                     toast.maketext(getbasecontext(), "null pdu",                             toast.length_short).show();                     break;                 case smsmanager.result_error_radio_off:                     toast.maketext(getbasecontext(), "radio off",                             toast.length_short).show();                     break;             }              viewconversation.this.unregisterreceiver(this);         }     }, new intentfilter(sent));      //---when sms has been delivered---     registerreceiver(new broadcastreceiver(){         @override         public void onreceive(context arg0, intent arg1) {             switch (getresultcode())             {                 case activity.result_ok:                     toast.maketext(getbasecontext(), "sms delivered",                             toast.length_short).show();                     break;                 case activity.result_canceled:                     toast.maketext(getbasecontext(), "sms not delivered",                             toast.length_short).show();                     break;             }         }     }, new intentfilter(delivered));      smsmanager sms = smsmanager.getdefault();     sms.sendtextmessage(phonenumber, null, message, sentpi, deliveredpi); } } 

here manifest activity:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="vn.hak_developers.spamsms" >  <uses-permission android:name="android.permission.read_sms" /> <uses-permission android:name="android.permission.write_sms" /> <uses-permission android:name="android.permission.send_sms" /> <uses-permission android:name="android.permission.receive_sms" />  <application     android:allowbackup="true"     android:icon="@drawable/ic_launcher"     android:label="@string/app_name"     android:theme="@style/apptheme" >     <activity         android:name=".mainlayout"         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=".setting.settingmethods"         android:label="@string/app_name" >     </activity>      <activity         android:name=".viewsms.viewbansim"         android:label="@string/app_name" >     </activity>      <activity         android:name=".viewsms.viewnhadat"         android:label="@string/app_name" >     </activity>      <activity         android:name=".viewsms.viewnganhang"         android:label="@string/app_name" >     </activity>      <activity         android:name=".viewsms.viewthongbao"         android:label="@string/app_name" >     </activity>      <activity         android:name=".viewsms.viewnhahang"         android:label="@string/app_name" >     </activity>      <activity         android:name=".viewsms.viewthurac"         android:label="@string/app_name" >     </activity>      <activity         android:name=".viewsms.viewconversation"         android:label="@string/app_name"         android:windowsoftinputmode="adjustresize">         <intent-filter>             <action android:name="android.intent.action.send" />             <action android:name="android.intent.action.sendto" />             <category android:name="android.intent.category.default" />             <category android:name="android.intent.category.browsable" />             <data android:scheme="sms" />             <data android:scheme="smsto" />             <data android:scheme="mms" />             <data android:scheme="mmsto" />         </intent-filter>     </activity>      <!-- broadcastreceiver listens incoming sms messages -->     <receiver android:name=".smsmanager.smsreceiver"         android:permission="android.permission.broadcast_sms">         <intent-filter android:priority="1000">             <action android:name="android.provider.telephony.sms_deliver" />             <action android:name="android.provider.telephony.sms_receiver" />         </intent-filter>     </receiver>      <!-- broadcastreceiver listens incoming mms messages -->     <receiver android:name=".smsmanager.mmsreceiver"         android:permission="android.permission.broadcast_wap_push">         <intent-filter>             <action android:name="android.provider.telephony.wap_push_deliver" />             <data android:mimetype="application/vnd.wap.mms-message" />         </intent-filter>     </receiver>      <!-- service delivers messages phone "quick response" -->     <service android:name=".smsmanager.headlesssmssendservice"         android:permission="android.permission.send_respond_via_message"         android:exported="true" >         <intent-filter>             <action android:name="android.intent.action.respond_via_message"/>             <category android:name="android.intent.category.default" />             <data android:scheme="sms" />             <data android:scheme="smsto" />             <data android:scheme="mms" />             <data android:scheme="mmsto" />         </intent-filter>     </service> </application>  </manifest> 

it works when send sms between emulators, when run app on phone, toasts radio off (my phone not in airplane mode).

please advise.

i made app sent sms last year, did not sent intent in method. did this:

sms.sendtextmessage(number, null, message, null, null); 

try this, maybe works.

edit

there's no need use code in sendsms(string phonenumber, string nessage)

simply this:

private void sendsms(string phonenumber, string message) {      //pendingintent pi = pendingintent.getactivity(this, 0,      //   new intent(this, viewconversation.class), 0);       smsmanager sms = smsmanager.getdefault();       sms.sendtextmessage(phonenumber, null, message, null, null);//edited      toast.maketext(getbasecontext(), "sms sent", toast.length_short).show(); } 

the pendingintent object (pi) pointing same activity (viewconversation.java), when sms sent, nothing happen.

hope helps.


Comments

Popular posts from this blog

c++ - No viable overloaded operator for references a map -

java - Custom OutputStreamAppender not run: LOGBACK: No context given for <MYAPPENDER> -

java - Cannot secure connection using TLS -