我有一个包含线程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);
感谢您的帮助!
答案 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);
}