2012-04-15 78 views
0

我是在android編程中的起始者,我試圖創建將短信記錄到文件的應用程序。 蔭具有「方法getContentResolver()是未定義的類型SMSObserver」,我不知道爲什麼一個問題...短信記錄器:方法getContentResolver()是未定義的類型

下面是代碼:

public class SMSObserver extends ContentObserver 
{ 
SMSLogger smsLogger; 

public SMSObserver(SMSLogger smsLogger) { 
    super(new Handler()); 
    this.smsLogger = smsLogger; 
} 

@Override 
public void onChange(boolean selfChange) { 
    super.onChange(selfChange); 
    querySMS(); 
} 

protected void querySMS() { 
    Uri uriSMS = Uri.parse("content://sms/"); 
    Cursor cur = getContentResolver().query(uriSMS, null, null, null, null); 
    cur.moveToNext(); 
    String body = cur.getString(cur.getColumnIndex("body")); 
    String add = cur.getString(cur.getColumnIndex("address")); 
    String time = cur.getString(cur.getColumnIndex("date")); 
    String protocol = cur.getString(cur.getColumnIndex("protocol")); 
    String out = ""; 
    if (protocol == null) 
     out = "Sending to "+add + ".Time:"+time +" - "+body; 
    else out = "Receive from "+add + ".Time:"+time +" - "+body; 
    /*logging action HERE...*/ 
} 
} 

和進口:

import android.database.ContentObserver; 
import android.os.Handler; 
import android.content.ContextWrapper; 
import org.json.JSONException; 
import org.json.JSONStringer; 
import android.content.ContentResolver; 
import android.content.Intent; 
import android.content.BroadcastReceiver; 
import android.database.Cursor; 
import android.net.Uri; 
import android.content.Context; 
import android.os.RemoteException; 
import android.provider.ContactsContract; 
import android.provider.ContactsContract.CommonDataKinds; 
import android.provider.ContactsContract.PhoneLookup; 

請幫忙。

回答

4

只能在Context對象上調用該方法。 試試這個:

public class SMSObserver extends ContentObserver 
{ 
SMSLogger smsLogger; 
Context context; 

public SMSObserver(SMSLogger smsLogger, Context c) { 
    super(new Handler()); 
    context = c; 
    this.smsLogger = smsLogger; 
} 

protected void querySMS() { 
    Uri uriSMS = Uri.parse("content://sms/"); 
    Cursor cur = context.getContentResolver().query(uriSMS, null, null, null, null); 
} 
} 
+0

Thanks .. +1 for the solution – 2014-05-15 12:18:34

0

擴展應用保持上下文的保持和訪問靜態或者你也可以通過函數調用來在ContentResolver的每個庫函數。目前您沒有上下文引用,因此您無法在此處調用getContentResolver()。

相關問題