【问题标题】:Xamarin Android app works on emulator, crashes on real device when using WebRequestXamarin Android 应用程序在模拟器上运行,使用 WebRequest 时在真实设备上崩溃
【发布时间】:2015-07-20 04:14:18
【问题描述】:

我正在使用此示例从指向 Android 设备的链接中获取一些数据: https://msdn.microsoft.com/en-us/library/456dfw4f(v=vs.110).aspx

应用程序在使用模拟器(带有 Android Kit Kat 的 Nexus 5)时运行良好,但是当我在实际的 Android(带有 Jellybean 的三星 S3 mini)上部署它(发行版)时,应用程序启动,但之后崩溃并显示“不幸的是..已经停止工作”。如果我不使用 WebRequest.Create,我在应用程序中的所有其他组件都可以在任何地方工作。

WebRequest request = WebRequest.Create(
            "MY LINK HERE"); //with a real link ofcourse

        request.Credentials = CredentialCache.DefaultCredentials;
        WebResponse response = request.GetResponse();


        Stream dataStream = response.GetResponseStream();

        StreamReader reader = new StreamReader(dataStream);

        string responseFromServer = reader.ReadToEnd()

        reader.Close();
        response.Close();

【问题讨论】:

  • 能否请您发布http请求的代码?
  • 我已经添加了代码:)
  • 添加 try catch 子句并请提供异常并确保您的地址不是 localhost

标签: c# android xamarin android-emulator webrequest


【解决方案1】:

在Properties下的AndroidManifest.xml文件中开启App的上网权限,如下:

<uses-permission android:name="android.permission.INTERNET" />

或通过以下步骤通过向导启用:

  • 右键单击项目和属性
  • 在 Android 清单下
  • 在所需权限下启用 Internet 复选框

希望对你有帮助

【讨论】:

    【解决方案2】:

    我解决了问题。我不知道我必须设置使用互联网的权限。

    Project->Project Options->Build->Android Application->Required permission->勾选Internet复选框并按OK。

    【讨论】:

    • 在 Debug 中,Android 将隐式授予您的应用程序 Internet 权限。在 Release 中,您必须明确授予 Internet 权限。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 2022-10-02
    • 2022-01-17
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多