刚学安卓,最近在写一个短信的收发程序,但是在模拟器上面可以收发,在真机上面却不行,解决办法:
对于收短信,由于现在很多手机系统对短信、电话等状态的读取设置了很多权限,需要手动去打开(目前不会用代码申请这些权限),例如在小米5手机上面找到应用的权限管理,打开Message这个应用(编写程序的名字)的所有权限:
这样接收短信就没什么问题了,然后在manifest文件里面加上android.permission.RECEIVE_SMS权限就可以正常的收短信。但是对于发短信还是有问题,只加android.permission.SEND_SMS这个权限,并不能正常的发短信,通过adb logcat抓取手机里面的log可以看到还少了一项权限:android.permission.READ_PHONE_STATE,原因是发短信也是要读取手机本身的状态的。加上这个权限就可以愉快的发短信了。
主要源码如下:
只有一个源文件MainActivity.java
public class MainActivity extends Activity {
private TextView tv_from;
private TextView tv_content;
private MessageReceiver messageReceiver;
private EditText et_send_number;
private EditText et_send_content;
private SendStatusReceiver sendStatusReceiver;
@O