在 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 方法中执行此操作

希望能解决您的问题。