在 Sinch 中获取 null 或空的用户标识
Getting null or empty userid in Sinch
FATAL EXCEPTION: main
java.lang.IllegalArgumentException: toUserId must not be null or empty
at com.sinch.android.rtc.internal.client.calling.DefaultCallClient.call(DefaultCallClient.java:153)
at com.sinch.android.rtc.internal.client.calling.DefaultCallClient.callUser(DefaultCallClient.java:102)
at com.sinch.android.rtc.internal.client.calling.DefaultCallClient.callUser(DefaultCallClient.java:97)
at packagename.SinchService$SinchServiceInterface.callUser(SinchService.java:91)
at packagename.PlaceCallActivity.callButtonClicked(PlaceCallActivity.java:142)
at packagename.PlaceCallActivity.access[=10=]0(PlaceCallActivity.java:26)
at packagename.PlaceCallActivity.onClick(PlaceCallActivity.java:173)
at android.view.View.performClick(View.java:4802)
at android.view.View$PerformClick.run(View.java:20101)
at android.os.Handler.handleCallback(Handler.java:810)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:189)
at android.app.ActivityThread.main(ActivityThread.java:5532)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:950)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
可能是什么问题请详细说说。我使用 json 解析器请求从数据库中获取随机手机号码。
private void callButtonClicked() {
try {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("status",status));
params.add(new BasicNameValuePair("mobile", callNo));
JSONObject json = jsonParser.makeHttpRequest(Config.URL_Random, "POST",
params);
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
response=json.getString(MOBILE);
}
}catch (JSONException e){
e.printStackTrace();
}
String userNo = response;
Log.d("Response is",userNo);
try {
Call call = getSinchServiceInterface().callUser(userNo);
if (call == null) {
// Service failed for some reason, show a Toast and abort
Toast.makeText(this, "Service is not started. Try stopping the service and starting it again before "
+ "placing a call.", Toast.LENGTH_LONG).show();
return;
}
String callId = call.getCallId();
Intent callScreen = new Intent(this, CallScreenActivity.class);
callScreen.putExtra(SinchService.CALL_ID, callId);
startActivity(callScreen);
} catch (MissingPermissionException e) {
ActivityCompat.requestPermissions(this, new String[]{e.getRequiredPermission()}, 0);
}
}
我在登录屏幕上存储用户手机号码,callno 是 LoggedIn No Ok 的 Textview 中的号码。此json 响应 response=json.getString(MOBILE);将从数据库中获取任意随机数。所以请告诉我我哪里做错了,而且我猜我的 php api 是由另一个存储随机数的人制作的,他向我保证从那里一切都很好。
在我看来你的数据库中有空值,我们不允许将空字符串作为用户 ID 发送到
尝试这个可能是因为您的 callNo 超出了 callbuttonclicked 的范围
假设如果您在 textview 中有数字,那么您可以在 callbuttonclicked 函数中执行此操作:
callNo= userNo.getText().toString();
userNo = (TextView) findViewById(R.id.number); --> 在 onCreate 方法中执行此操作
希望能解决您的问题。
FATAL EXCEPTION: main
java.lang.IllegalArgumentException: toUserId must not be null or empty
at com.sinch.android.rtc.internal.client.calling.DefaultCallClient.call(DefaultCallClient.java:153)
at com.sinch.android.rtc.internal.client.calling.DefaultCallClient.callUser(DefaultCallClient.java:102)
at com.sinch.android.rtc.internal.client.calling.DefaultCallClient.callUser(DefaultCallClient.java:97)
at packagename.SinchService$SinchServiceInterface.callUser(SinchService.java:91)
at packagename.PlaceCallActivity.callButtonClicked(PlaceCallActivity.java:142)
at packagename.PlaceCallActivity.access[=10=]0(PlaceCallActivity.java:26)
at packagename.PlaceCallActivity.onClick(PlaceCallActivity.java:173)
at android.view.View.performClick(View.java:4802)
at android.view.View$PerformClick.run(View.java:20101)
at android.os.Handler.handleCallback(Handler.java:810)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:189)
at android.app.ActivityThread.main(ActivityThread.java:5532)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:950)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
可能是什么问题请详细说说。我使用 json 解析器请求从数据库中获取随机手机号码。
private void callButtonClicked() {
try {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("status",status));
params.add(new BasicNameValuePair("mobile", callNo));
JSONObject json = jsonParser.makeHttpRequest(Config.URL_Random, "POST",
params);
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
response=json.getString(MOBILE);
}
}catch (JSONException e){
e.printStackTrace();
}
String userNo = response;
Log.d("Response is",userNo);
try {
Call call = getSinchServiceInterface().callUser(userNo);
if (call == null) {
// Service failed for some reason, show a Toast and abort
Toast.makeText(this, "Service is not started. Try stopping the service and starting it again before "
+ "placing a call.", Toast.LENGTH_LONG).show();
return;
}
String callId = call.getCallId();
Intent callScreen = new Intent(this, CallScreenActivity.class);
callScreen.putExtra(SinchService.CALL_ID, callId);
startActivity(callScreen);
} catch (MissingPermissionException e) {
ActivityCompat.requestPermissions(this, new String[]{e.getRequiredPermission()}, 0);
}
}
我在登录屏幕上存储用户手机号码,callno 是 LoggedIn No Ok 的 Textview 中的号码。此json 响应 response=json.getString(MOBILE);将从数据库中获取任意随机数。所以请告诉我我哪里做错了,而且我猜我的 php api 是由另一个存储随机数的人制作的,他向我保证从那里一切都很好。
在我看来你的数据库中有空值,我们不允许将空字符串作为用户 ID 发送到
尝试这个可能是因为您的 callNo 超出了 callbuttonclicked 的范围 假设如果您在 textview 中有数字,那么您可以在 callbuttonclicked 函数中执行此操作: callNo= userNo.getText().toString();
userNo = (TextView) findViewById(R.id.number); --> 在 onCreate 方法中执行此操作
希望能解决您的问题。