Kotlin中的URI解析无法正常工作

时间:2018-07-11 06:27:44

标签: android kotlin uri

我试图在Web浏览器中打开从服务器获取的链接。当我手动解析一个字符串时,一切都很好并且运行良好:

paymentApi.httpPost(params).responseString{ request, response, result ->
    when(result){
        is Result.Success -> {
            val data = result.get()
            val url = Uri.parse("http://google.com")
            println(url)

            val intent = Intent(Intent.ACTION_VIEW, url)
            startActivity(intent)
        }

        is Result.Failure -> {
            println(result.get())
        }
    }
}

在此代码段中,我正在将http发布请求发送到有效的url,并且得到有效的响应。此响应包含一个指向付款网站的简单网址。当我不通过uri解析该响应并手动输入网址时,一切都很好。但是当我解析服务器的响应时,这是我不断得到的错误:

D/Instrumentation: checkStartActivityResult() : Intent { act=android.intent.action.VIEW dat="https://pay.ir/payment/gateway/21559471" }
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: atd.com.ekran, PID: 14542
                  android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat="https://pay.ir/payment/gateway/21559471" }
                      at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1968)
                      at android.app.Instrumentation.execStartActivity(Instrumentation.java:1622)
                      at android.app.Activity.startActivityForResult(Activity.java:4564)
                      at android.app.Activity.startActivityForResult(Activity.java:4522)
                      at android.app.Activity.startActivity(Activity.java:4883)
                      at android.app.Activity.startActivity(Activity.java:4851)

如您所见,该网址是完全有效的。因此,服务器抛出的响应没有错。我究竟做错了什么? 这里是您可能需要的更多信息:

  1. 我正在使用Kotlin的燃料库发送我的http请求
  2. 此URL在我的iOS应用中正常运行。

1 个答案:

答案 0 :(得分:0)

我知道了。所以我的字符串本身带有双引号,这就是为什么uri parse无法正常工作。我要做的就是用

删除那些烦人的标记
  val dataRemoved =  data.replace("\"","")

现在一切正常。