2015-05-22 2 views
1

Я пишу программу для чтения записей телефонов и телефонов для Android. Примерно так:android read SMS Входящие сообщения

package com.example.read_sms; 

    import android.app.Activity; 
    import android.database.Cursor; 
    import android.net.Uri; 
    import android.os.Bundle; 
    import android.widget.TextView; 

    public class MainActivity extends Activity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      TextView textView = (TextView) findViewById(R.id.textView1); 
      Uri uriSMSURI = Uri.parse("content://sms/inbox"); 
      Cursor cur = getContentResolver().query(uriSMSURI, null, null, null, 
        null); 
      String sms = ""; 
      while (cur.moveToNext()) { 
       sms += "From :" 
         + cur.getString(cur.getColumnIndexOrThrow("address")) 
         + " : " + cur.getString(cur.getColumnIndexOrThrow("body")) + "\n"; 
      } 
      textView.setText(sms); 
     } 

    } 

Я запускаю это на эмуляторе, эмулятор работает на моем ядре золотой рыбы. Я вставляю ядро ​​зацепить чтение смс, код так:

asmlinkage int our_sys_open(const char* file, int flags, int mode) 
{ 
//联系人 /data/data/com.android.providers.contacts/databases/contacts2.db   //通话记录     /data/data/com.android.providers.telephony/databases/telephony.db 
//短信记录 /data/data/com.android.providers.telephony/databases/mmssms.db 
    char * contact =  "/data/data/com.android.providers.contacts/databases/contacts2.db"; 
    char * telephony =  "/data/data/com.android.providers.telephony/databases/telephony.db"; 
    char * sms = "/data/data/com.android.providers.telephony/databases/mmssms.db"; 
if (strcmp(file, contact) == 0){ 
    printk("应用程序正在读取手机的联系人记录!!!\n"); 
} 
if (strcmp(file, telephony) == 0){ 
printk("应用程序正在读取手机的通话记录!!!\n"); 
} 
if (strcmp(file, sms) == 0){ 
printk("应用程序正在读取手机的短信记录!!!\n"); 
} 


// printk("A file was opened\n%s\n%d\n%d\n",file,flags,mode); 
return original_call_open(file, flags, mode); 
} 

Выше моя собственная функция крюка, я через «кот/Proc/kmsg» посмотреть информацию ядра. Когда я устанавливаю этот apk, ядро ​​показывает «应用 程序 正在 读取 手机 的 联系人 记录 !!!» «/data/data/com.android.providers.contacts/databases/contacts.db-mj4dec6bdb» "应用 程序 的 名称 是 ContactsProvide" "该 应用 程序 的 进程 id 是: 222" Я не знаю, почему ядро ​​показывает «... contacts.db ....», но я прочитал смс. По-моему, он должен показывать «/data/data/com.android.providers.telephony/databases/mmssms.db ....». Кто-нибудь может мне помочь? THX.

+0

Пожалуйста, проверьте его на настоящем устройстве. Эмулятор - это неправильный выбор. –

+0

Тогда дайте мне знать ваши проблемы –

+0

为什么 是 安装 的 的 时候 打印 读取 读取 跑啊. –

ответ

0
Uri inboxURI = Uri.parse("content://sms/inbox"); 

    // List required columns 
    String[] reqCols = new String[]{"_id", "address", "body"}; 

    // Get Content Resolver object, which will deal with Content Provider 
    ContentResolver cr = getContentResolver(); 

    // Fetch Inbox SMS Message from Built-in Content Provider 
    Cursor c = cr.query(inboxURI, reqCols, null, null, null); 
    bankMessage = new ArrayList<message>(); 
    while (c.moveToNext()) { 
     Log.i("address", c.getString(c.getColumnIndex("address"))); 
     if (c.getString(c.getColumnIndex("address")).contains("SBI") || c.getString(c.getColumnIndex("address")).contains("HDFC") || c.getString(c.getColumnIndex("address")).contains("ICICI")){ 
      message bMessage = new message(); 
      bMessage.set_id(c.getString(c.getColumnIndex("_id"))); 
      bMessage.setAddress(c.getString(c.getColumnIndex("address"))); 
      bMessage.setBody(c.getString(c.getColumnIndex("body"))); 
      bankMessage.add(bMessage); 
     } 
    } 
    // Attached Cursor with adapter and display in listview 
    adapter = new SimpleCursorAdapter(this, R.layout.row, c, 
      new String[]{"body", "address"}, new int[]{ 
      R.id.lblMsg, R.id.lblNumber}); 
    lvMsg.setAdapter(adapter); 
+0

вы также должны попытаться объяснить словами, что делает ваш код и как он решает проблему OP –

Смежные вопросы