我有类控制来通过Cursor获取sms数据,但是当我在类MainActivity中调用ReadSMS时出现问题,但我将所有代码从ReadSMS复制到MainActivity并运行,它将正常运行。
__call__
}
它注意到了问题:
a.count
更新:Mike M.'答案是解决我的问题
答案 0 :(得分:1)
您显然已将ReadSMS
作为AppCompatActivity
子类,以便在您的IDE中解析getContentResolver()
方法。这不起作用,因为您可能会在ReadSMS
MainActivity
中使用new
创建Activity
的实例,而Context
则无法使用Activity
{1}}将无法正确创建。
如果要将查询移动到单独的类,请不要使该类成为Context
的后代。相反,在getListSMS()
方法中传递getContentResolver()
,您可以调用getContactName()
,就像您在static
方法中所做的那样。您也可以创建两个方法public class ReadSMS {
public static TreeMap getListSMS(Context context) {
...
Cursor cur = context.getContentResolver().query(smsUri,
null,
null,
null,
null);
...
}
public static String getContactName(Context context, String phoneNumber) {
...
}
}
,因此您无需创建类的实例来调用方法。
MainActivity
然后,在Map messages = ReadSMS.getListSMS(MainActivity.this);
...
String name = ReadSMS.getContactName(MainActivity.this, phoneNumber);
中,你会这样称呼它们:
cmbfrmwarehouse.Focus() '' or cmbTowarehouse.Focus()