我试图在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)
如您所见,该网址是完全有效的。因此,服务器抛出的响应没有错。我究竟做错了什么? 这里是您可能需要的更多信息:
答案 0 :(得分:0)
我知道了。所以我的字符串本身带有双引号,这就是为什么uri parse无法正常工作。我要做的就是用
删除那些烦人的标记 val dataRemoved = data.replace("\"","")
现在一切正常。