劝君更进一杯酒 2023-05-17 20:01 采纳率: 0%
浏览 49
已结题

关于#maui-android#的问题:想用MAUI开发安卓程序,TCP监听,模拟器运行时遇到Permission denied(语言-c#)

初学者,想用MAUI开发安卓程序,模拟器运行时遇到一个问题,百度了很多资料还是没解决,有说是权限问题,有说是进程问题,有说是模拟器问题的,但是都试了没解决,希望大拿看到能不吝赐教。

程序是在预置的程序里面,按钮的事件加了一个TCP监听,运行到_listener.Start()_时,报错System.Net.Sockets.SocketException: 'Permission denied',发布后的APK真机装上也出现同样的错误。

以下是AndroidManifest.xml配置

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true"></application>


</manifest>

以下是MainPage.xaml.cs

using System.Net;
using System.Net.Sockets;

namespace MauiApp5;

public partial class MainPage : ContentPage
{
    int count = 0;

    public MainPage()
    {
        InitializeComponent();
    }

    private void OnCounterClicked(object sender, EventArgs e)
    {

        NetworkAccess accessType = Connectivity.Current.NetworkAccess;

        if (accessType == NetworkAccess.Internet)
        {
            // Connection to internet is available
            DisplayAlert("ces", "123", "OK");
            TcpListener listener = new TcpListener(IPAddress.Any, 502);
          **listener.Start();**
        }


        count++;

        if (count == 1)
            CounterBtn.Text = $"Clicked {count} time";
        else
            CounterBtn.Text = $"Clicked {count} times";

        SemanticScreenReader.Announce(CounterBtn.Text);
    }
}
  • 写回答

1条回答 默认 最新

  • 「已注销」 2023-05-17 20:08
    关注

    参考GPT和自己的思路:根据你提供的信息,系统会在使用TcpListener时报错“System.Net.Sockets.SocketException: 'Permission denied'”,这通常是由于在Android应用程序中未明确请求Internet权限所致。根据你提供的AndroidManifest.xml代码,应用程序已在清单文件中请求了"android.permission.INTERNET"权限,因此问题可能出现在其他方面。

    建议你确认一下以下几点:

    1. 是否使用了最新版本的MAUI工具包?最近的版本可能已经修复了一些安全问题,因此更新一下可能会有所帮助。

    2. 在模拟器中是否已启用Internet连接?如果没有Internet连接,则无法使用TcpListener。

    3. 是否在模拟器中手动授予了应用程序的Internet权限?有些模拟器需要手动授予Internet权限,否则应用程序将无法使用网络连接。

    4. 尝试在实际的Android设备上运行应用程序,看看是否仍然存在此问题。如果在实际设备上运行时没有错误,则问题可能是与模拟器有关。

    希望这些建议能够帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月19日
  • 赞助了问题酬金15元 5月18日
  • 修改了问题 5月18日
  • 创建了问题 5月17日

悬赏问题

  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上
  • ¥15 提问一个关于vscode相关的环境配置问题,就是输入中文但是显示不出来,代码在idea可以显示中文,但在vscode不行,不知道怎么配置环境
  • ¥15 netcore使用PuppeteerSharp截图
  • ¥20 这张图页头,页脚具体代码该怎么写?
  • ¥15 关于#sql#的问题,请各位专家解答!
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂