读取SIM卡上的短信失败情况是这个样子滴:可以读取手机上的短信,可以读取SIM卡上的联系人,就是读不到SIM卡
读取SIM卡上的短信失败
情况是这个样子滴:
可以读取手机上的短信,可以读取SIM卡上的联系人,就是读不到SIM卡上的短信,也设置权限了, <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> 还是读不到,myCursor 返回的是null。
为什么就读不到呢?
- Java code
package simok.ok;import android.app.Activity;import android.os.Bundle;import android.content.ContentResolver;import android.database.Cursor;import android.provider.Contacts.People;import android.util.Log;import android.widget.Toast;import android.telephony.TelephonyManager;import android.content.Context;import android.content.Intent;import android.telephony.gsm.*;import android.content.Intent;import android.widget.TextView; import android.telephony.gsm.SmsMessage;import android.database.sqlite.SQLiteException; import android.net.Uri; @SuppressWarnings("unused")public class simok extends Activity {private static final String LOG_TAG = "Sms Query";//private TelephonyManager telMgr;//String TAG = "GameScene"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //telMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE) getSmsAndSendBack(); } public void getSmsAndSendBack() { String[] projection = new String[] {"_id","address","person","body" }; //StringBuilder str=new StringBuilder(); // Cursor myCursor = cr.query(Uri.parse("content://sms/inbox"),projection,null, null ,null); //Uri uri = Uri.parse("content://sms/icc"); //Cursor myCursor = managedQuery(Uri.parse("content://sms/inbox"),projection,null, null ,null); //Cursor myCursor = managedQuery(Uri.parse("content://sms/icc"),projection,null, null ,null); Cursor myCursor = managedQuery(Uri.parse("content://icc/adn"),projection,null, null ,null); // Log.v(TAG, "onTouchDownReal()"); processResults(myCursor); } private void processResults(Cursor cur) { if (cur.moveToFirst()) //int count=cur.getCount(); //cur.moveToFirst(); //for(int i=0;i<count;i++) { String name; String phoneNumber; String sms; int nameColumn = cur.getColumnIndex("person"); int phoneColumn = cur.getColumnIndex("address"); int smsColumn = cur.getColumnIndex("body"); do { name = cur.getString(nameColumn); phoneNumber = cur.getString(phoneColumn); sms = cur.getString(smsColumn); Log.i(LOG_TAG,"name="+name); Log.i(LOG_TAG,"phoneNumber="+phoneNumber); Toast.makeText(this,name+""+phoneNumber+""+sms,Toast.LENGTH_LONG).show(); } while (cur.moveToNext()); } //cur.moveToNext(); else { Toast.makeText(this,"你好",Toast.LENGTH_LONG).show();} }//processResults // public final static String SMS_URI_ALL = "content://sms/"; //0 //public final static String SMS_URI_INBOX = "content://sms/inbox";//1 public final static String SMS_URI_SEND = "content://sms nt";//2 public final static String SMS_URI_DRAFT = "content://sms/draft";//3 public final static String SMS_URI_OUTBOX = "content://sms/outbox";//4 public final static String SMS_URI_FAILED = "content://sms/failed";//5 public final static String SMS_URI_QUEUED = "content://sms/queued";//6 //public final static String SMS_ICC = "content://sms/icc";//23 }
[解决办法]
http://hi.baidu.com/dhqway/blog/item/d32cccd8e4fb863b33fa1c9e.html
- Java code
Uri uri = Uri.parse("content://sms/icc"); String[] projection = null;//new String[]{"name","number"};String selection = null;String[] selectionArgs = null;String sortOrder = null;Cursor c2 = managedQuery(uri, projection, selection, selectionArgs, sortOrder);c2.moveToFirst();
[解决办法]
...看看别人有没有好办法吧
[解决办法]
我觉得吧,楼主,你的这种方法是读取不了Sim卡上的短信的。我这里用其他的方法实现了。不过现在有问题,不能够删除短信。
给你提供点思路,就是你看看SmsManager这个类。或许对你有帮助。
[解决办法]
关注学习一下吧..
[解决办法]
真机试过了么,也不行?
[解决办法]
楼主,我的代码很简单的,
sms = mSmsManager.getAllMessagesFromIcc();
这句话可以读出所有的Sim卡上的短信,
读出以后是保存在sms这个数组里面的。 