你好朋友这是我用来接收短信的代码。收到短信后收到短信显示不幸丢失了。任何人都可以帮助我。
ReceivesmsActivity.java
public class ReceivesmsActivity extends Activity {
public TextView info;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receivesms);
info = (TextView) findViewById(R.id.info);
}
public class Receivesms extends BroadcastReceiver{
@Override public void onReceive(Context context, Intent intent) {
try{
Bundle pudsBundle = intent.getExtras();
Object[] pdus = (Object[]) pudsBundle.get("pdus");
SmsMessage messages =SmsMessage.createFromPdu((byte[]) pdus[0]);
info.setText(messages.getMessageBody().toString());
}catch(Exception e){
Toast.makeText(context,e.toString(),Toast.LENGTH_LONG).show();
}
}
}
这是此应用程序的清单文件
清单
<activity
android:name="com.receivesms.ReceivesmsActivity"
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=".Receivesms">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
答案 0 :(得分:1)
可能需要这样做:
public class ReceivesmsActivity extends Activity implements Handler.Callback {
public TextView info;
public Handler handler;
private static final int SUCCESS = 0;
private static final int FAILED = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receivesms);
info = (TextView) findViewById(R.id.info);
handler = ReceivesmsActivity.this;
}
@Override
public boolean handleMessage(Message message){
switch(message.what){
case SUCCESS:
udpateUI(message);
break;
case FAILED:
// Maybe toast the user that you have not been able to receive or update UI
break;
}
return true;
}
// Updates the UI from the Activity, not the Broadcast Receiver
public void updateUI(Message msg){
info.setText(((SmsMessage) msg.obj).obtainMessageBody().toString());
}
// Since this is a service its not run on the UI thread, so can't update UI
public class Receivesms extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
try{
Bundle pudsBundle = intent.getExtras();
Object[] pdus = (Object[]) pudsBundle.get("pdus");
SmsMessage messages =SmsMessage.createFromPdu((byte[]) pdus[0]);
// the idea is get a reference to your activity
// then send a message back to the Handler to update the UI
handler.obtainMessage(SUCCESS, messages).sendToTarget();
}catch(Exception e){
Toast.makeText(context,e.toString(),Toast.LENGTH_LONG).show();
}
}
}