我的android应用程序中有一个非常具体和尴尬的问题。这只是我的服务类中的onStartCommand方法,在运行时应该创建一个电话状态监听器。因此,每次用户接听电话时,我都希望将该号码发送到Parse中的数据库。问题是我认为在内部类和Parse方面存在冲突。没有任何东西被推送到服务器。我是Android和Parse的新手,所以让我知道我是否遗漏了一些明显的东西,或者是否有解决方法。 感谢
public int onStartCommand(Intent e, int flags, int startId) {
TelephonyManager TelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
class TeleListener extends PhoneStateListener {
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
Parse.initialize(ParseService.this,
"still a secret",
"no no no");
PushService.setDefaultPushCallback(ParseService.this,
Main.class);
TelephonyManager TelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String userNumber = (String) TelephonyMgr.getLine1Number();
switch (state) {
case TelephonyManager.CALL_STATE_OFFHOOK:
// OFFHOOK
ParseObject Users = new ParseObject("UserCalls");
Users.put("CallsReceived", incomingNumber);
Users.put("UserNumber", userNumber);
Users.saveInBackground();
Toast.makeText(getApplicationContext(), "Offhook",
Toast.LENGTH_SHORT).show();
}
}
}
TelephonyMgr.listen(new TeleListener(),
PhoneStateListener.LISTEN_CALL_STATE);
Toast.makeText(this, "Service has Started", Toast.LENGTH_SHORT).show();
return START_STICKY;
}
答案 0 :(得分:0)
您正在使用用户自定义对象的字段(列)的非法名称。列名称只能包含字母数字或下划线字符,并且必须以字母开头。所以尝试类似的事情:
ParseObject Users = new ParseObject("Users");
Users.put("User_ID", userNumber);
String callMade = (String) incomingNumber;
Users.put("Calls_Made", callMade);
Users.saveInBackground();
目前还不清楚是否要使用内置的“User”类。如果您这样做,则必须先将该用户注册或登录,然后再将数据保存到对象。您还需要引用它:
ParseUser user = ParseUser.getCurrentUser();