2012-04-15 13 views
0

私はAndroidプログラミングの初心者です。私はsmsをファイルに記録するアプリケーションを作成しようとしています。問題がある Iamは「方法getContentResolverは()型SMSObserverについて定義されていません」と私はなぜ知らない...ここでSMS Logger:メソッドの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

ありがとうございました+1 –

0

は、コンテキストのホールドを維持し、静的にアクセスするためのアプリケーションを拡張したり、あなたはContentResolverの各ライブラリ関数への関数呼び出しを渡すことができます。現在コンテキスト参照がないので、ここでgetContentResolver()を呼び出すことはできません。

関連する問題