Я пишу программу для чтения записей телефонов и телефонов для 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.
Пожалуйста, проверьте его на настоящем устройстве. Эмулятор - это неправильный выбор. –
Тогда дайте мне знать ваши проблемы –
为什么 是 安装 的 的 时候 打印 读取 读取 跑啊. –