打电话" getContentResolver"在Android Java类中

时间:2015-05-08 11:18:03

标签: android multithreading service android-contentresolver android-context

我有一个包含线程T的Service S.我也有一个Java类C.我想从线程T中调用类C的方法。该方法应该包含以下行:

Uri uri = Uri.parse("content://sms");
Cursor cursor1 =  getContentResolver().query(uri, null, null ,null, null);

问题是我收到了错误" 无法解决方法' getContentResolver()' &#34 ;. 我知道这是一个上下文的问题,但我不知道如何解决它。

修改

不考虑线程T,尝试了这个:

C班:

public class SMS {

private ArrayList<String> smsList = new ArrayList<>();

public SMS(Context context){        

    Uri uri = Uri.parse("content://sms");
    Cursor cursor1 =  context.getContentResolver().query(uri, null, null ,null, null);

    }
}

服务S:

public class MyService extends Service{

    SMS sms = new SMS(this);
}

但我收到错误:

java.lang.NullPointerException
at com.example.maxime.servicesms2.SMS.<init>(SMS.java:18)

第18行:

Cursor cursor1 =  context.getContentResolver().query(uri, null, null ,null, null);

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您可以将您的服务作为android.app.Service

的孩子
public class ServiceS extends Service {...}

然后它将有getContentResolver()方法

答案 1 :(得分:0)

您应该将Context传递给C类中的方法

类似的东西:

public void doSomething(Context context) {
    Uri uri = Uri.parse("content://sms");
    Cursor cursor =  context.getContentResolver().query(uri, null, null ,null, null);
}