1、布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="启动" />
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
2、Service类
public class TestService extends Service {
private Handler handler;
private boolean flag = true;
@Override
public IBinder onBind(Intent arg0) {
// 绑定到一个Activity中,这里一般不会编写内容,如果绑定了,则Activity关闭时,此Service也一起关闭。
return null;
}
@Override
public void onCreate() {
super.onCreate();
System.out.println("创建Service....");
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
Toast.makeText(TestService.this, "启动了的服务....",
Toast.LENGTH_SHORT).show();
}
};
}
@Override
public void onDestroy() {
super.onDestroy();
System.out.println("销毁Service....");
flag = false;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// 启动服务时,自动调用这个方法
Thread t = new Thread() {
@Override
public void run() {
while (flag) {
try {
Thread.sleep(3000);
} catch (Exception e) {
}
handler.sendEmptyMessage(0);
}
}
};
t.start();
return super.onStartCommand(intent, flags, startId);
}
}
3、BroadcastReceiver进行接收
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 先判断是否是因为接收到短信进入此接收器的
if (intent.getAction()
.equals("android.provider.Telephony.SMS_RECEIVED")) {
// 停止此广播,让后面的接收器无法接收到信息
this.abortBroadcast();
// 取得发送过来的参数
Bundle b = intent.getExtras();
if (b != null) {
Object[] objs = (Object[]) b.get("pdus");
SimpleDateFormat sf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
// 循环建立短信对象,并取得里面的信息.
for (int i = 0; i < objs.length; i++) {
SmsMessage msg = SmsMessage.createFromPdu((byte[]) objs[i]);
// 取得消息中的内容
String content = msg.getMessageBody();
// 发送人信息
String sender = msg.getDisplayOriginatingAddress();
// 发送时间
Date date = new Date(msg.getTimestampMillis());
String sendTime = sf.format(date);
// 打印结果
System.out.println("接收到的消息为: " + sender + " --> " + content
+ " --> " + sendTime);
}
}
} else {
Toast.makeText(context, "接收到了广播", Toast.LENGTH_SHORT).show();
}
}
}
4、Activity类
public class MainActivity extends Activity {
private TextView text;
private Button btn;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn);
text = (TextView) findViewById(R.id.content);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Intent in = new Intent(MainActivity.this, TestService.class);
// startService(in);
// Intent in = new Intent(MainActivity.this, MyReceiver.class);
// sendBroadcast(in);
String content = "测试消息内容";
SmsManager manager = SmsManager.getDefault();
List<String> all = manager.divideMessage(content);
for (int i = 0; i < all.size(); i++) {
manager.sendTextMessage("15162852231", null, all.get(0),
null, null);
}
}
});
// 取得电话状态服务
TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
StringBuilder builder = new StringBuilder();
builder.append(tm.getLine1Number() + "\r\n");
builder.append(tm.getDeviceId() + "\r\n");
builder.append(tm.getNetworkCountryIso() + "\r\n");
builder.append(tm.getNetworkOperatorName() + "\r\n");
// 取得网络状态
ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
builder.append(info.getTypeName() + "\r\n");
text.setText(builder.toString());
}
}