Wednesday, August 1, 2012

Re: [android-developers] Re: Receive sms

Hi Ehsan,
 
Answer is here :
 
package com.android.Sms;

import android.app.Activity;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.gsm.*;
import android.telephony.cdma.*;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class TSms extends Activity{
     Button btnSendSMS;
     EditText txtPhoneNo;
     EditText txtMessage;
     public ProgressDialog pd;
    
     private void sendSMS(String phoneNumber, String message)
     {       
         String SENT = "SMS_SENT";
         String DELIVERED = "SMS_DELIVERED";
 
         PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
             new Intent(SENT), 0);
 
         PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
             new Intent(DELIVERED), 0);
 
         //---when the 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;
             }
         }
     }, new IntentFilter(SENT));
       //---when the 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);       
     }
    
    
  public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.tabviewsms);
  
     pd = new ProgressDialog(this);
     pd.setMessage("Continiue...");
     pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
     pd.setMax(100);
     pd.setIndeterminate(false);
     btnSendSMS = (Button)   findViewById(R.id.btnSendSMS);
        txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo);
        txtMessage = (EditText) findViewById(R.id.txtMessage);
       
        btnSendSMS.setOnClickListener(new View.OnClickListener()
        {
     public void onClick(View v)
     {
     String phoneNo =  txtPhoneNo.getText().toString();
     String message =  txtMessage.getText().toString();
   
   
     if(phoneNo.length()>0 && message.length()>0)
     {
       sendSMS(phoneNo, message);
     }
    else
      Toast.makeText(getBaseContext(), "Error !!!", Toast.LENGTH_SHORT).show();
    }
  });
     }
  }
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>

Best Regards
Fahrettin ATES

 
2012/8/1 Ehsan Sadeghi <esadeghi@gmail.com>
How can I receive from certain numbers and only for them my app is started and how doesn't messages that app receive appear in the messaging built in?

در دوشنبه 30 ژوئیهٔ 2012، ساعت 18:44:03 (UTC)، Ehsan Sadeghi نوشته:
I write this code in manifest file :
<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />
   
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Realstate"
            android:exported="false"
                       android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="ir.smspeik.sms.realstate" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>        <receiver android:name=".ReceiveSms" android:exported="false">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
            </intent-filter>
        </receiver>
       </application>
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission  android:name="android.permission.RECEIVE_SMS" />
 
and this code in ReceiveSms :

package

ir.smspeik.sms;

import

android.content.BroadcastReceiver;

import

android.content.Context;

import

android.content.Intent;

import

android.os.Bundle;

import

android.telephony.SmsMessage;

import

android.widget.Toast;

public

class ReceiveSms extends BroadcastReceiver{

@Override

public void onReceive(Context context, Intent intent)

{

//---get the SMS message passed in---

Bundle bundle = intent.getExtras();

SmsMessage[] msgs =

null;

String str =

"";

if (bundle != null)

{

//---retrieve the SMS message received---

Object[] pdus = (Object[]) bundle.get(

"pdus");

msgs =

new SmsMessage[pdus.length];

for (int i=0; i<msgs.length; i++){

msgs[i] = SmsMessage.createFromPdu((

byte[])pdus[i]);

str +=

"SMS from " + msgs[i].getOriginatingAddress();

str +=

" :";

str += msgs[i].getMessageBody().toString();

str +=

"\n";

}

//---display the new SMS message---

Toast.makeText(context, str, Toast.

LENGTH_LONG).show();

}

}

}

but when I send sms to emulator the application doesn't receive it and builtin messaging get sms.

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment