I m new in android, i m trying to get the number of a text message when a new message comes, i m using broadcast reciever for this. but when a new message comes my 'broadcast reciever' class not working. can anyone help me to find out the problem. giving my code below..
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.test_layout);
}
public class MyBroadcastReciever extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String smsnumber = "";
if (bundle != null)
{
//---retrieve the sender number SMS 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]);
smsnumber = msgs[i].getOriginatingAddress();
}
}
}
}
}
i had given the recieve tag in manifest.
<receiver android:name="com.aucupa.iack.MyBroadcastReciever" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
given the uses permission for recieving sms too..
<uses-permission android:name="android.permission.RECEIVE_SMS" />
but when an sms comes no response from the MyBroadcastReciever class.when i debug the control not comes to the MyBroadcastReciever class. plz help me to find out the problem
finally i got the answer from all your help, giving my answer here..
public class MainActivity extends Activity
{
MyBroadcastReciever broadcastreciever = new MyBroadcastReciever();
static final String SOME_ACTION = "android.provider.Telephony.SMS_RECEIVED";
IntentFilter intentFilter = new IntentFilter(SOME_ACTION);
Intent i = new Intent(SOME_ACTION);
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.test_layout);
sendBroadcast(i);
context.registerReceiver(broadcastreciever, intentFilter);
}
public class MyBroadcastReciever extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction() == "android.provider.Telephony.SMS_RECEIVED"){
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String smsnumber = "";
if (bundle != null)
{
//---retrieve the sender number SMS 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]);
smsnumber = msgs[i].getOriginatingAddress();
}
}
}
}
}
}
In manifest use this Premission
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
and
<receiver android:name="net.app.sms.MessageReceiver" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
try this...
EDITED
<receiver android:name="Your PackageName.ClassName" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>