【发布时间】:2016-10-04 01:23:59
【问题描述】:
我正在使用 Visual Studio 2015,最低 SDK 版本 14。 我到处读到,在构建发布版本后,您需要在清单中指定互联网权限。 (虽然有些人说只有在你的 android 版本低于 x 版本时才需要它)。
这是我的清单的摘录:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application android:label="<app name>" android:icon="@drawable/icon"></application>
问题是,当直接从 Visual 构建并运行到我的设备时,我无法从我的应用程序访问互联网。
在设备的应用程序管理器中,我可以看到分配给我的应用程序的权限如下(无论是从 Visual Studio 部署还是从 Google Play 安装):
- 修改或删除 USB 的内容存储
- 完全网络访问权限
- 查看网络连接
另一方面,在将应用程序上传到 Goolge Play(alpha 测试)时,当我在手机中单击安装时,显示应用程序将要使用的权限的弹出窗口显示它需要的是“访问照片/媒体/文件”
[编辑] 我的应用程序访问互联网的方式是通过 PCL 项目。 基本上,这是执行(或不执行)所有魔法的代码块。
try
{
if (CheckIfThereIsConnection())
{
HttpWebRequest request = WebRequest.Create(urlRequest) as HttpWebRequest;
request.Headers[HttpRequestHeader.Authorization] = "my token here";
using (WebResponse response = await request.GetResponseAsync())
{
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream);
string line = string.Empty;
StringBuilder sb = new StringBuilder();
while ((line = reader.ReadLine()) != null)
{
sb.Append(line);
}
T deserializedObject = JsonConvert.DeserializeObject<T>(sb.ToString());
return deserializedObject;
}
}
}
}
catch (Exception ex)
{
throw new Exception("My custom Exception", ex.InnerException);
}
我到处找都没有运气。有人可以为我提供进一步详细的解释,或者指出一些文件让我看看吗?
【问题讨论】:
-
INTERNET和WRITE_EXTERNAL_STORAGE在Debug配置中默认启用。您必须在Release配置中明确指定这些。 developer.xamarin.com/guides/android/advanced_topics/… |您能否详细介绍从您的应用程序访问互联网的问题?您使用什么代码访问互联网? -
@JonDouglas 是的,我知道这一点。这就是我将这些设置添加到清单的原因。我会尽快发布我如何访问互联网的详细信息,即使它在调试模式下工作正常,所以我想应该没问题。
-
我们需要具体的证据来帮助诊断这个问题。当您从
Debug或 Google Play 安装您的应用程序时,请转到设置 -> 应用程序 -> 选择您的应用程序 -> 权限。显示的确切权限的屏幕截图或文本会有所帮助! -
@JonDouglas 我已经编辑了我的问题
-
您是否从完全卸载应用程序并尝试
Debug和 Google Play 中看到相同的权限?查看Debug构建是否因Don't Link以外的其他链接选项而失败。
标签: android visual-studio xamarin