gpt4 book ai didi

android - 如何从 xamarin.android mono 中的弹出窗口以编程方式打开移动数据?

转载 作者:行者123 更新时间:2023-11-29 02:40:16 27 4
gpt4 key购买 nike

我正在尝试从我的应用程序中的弹出窗口打开移动数据或 wifi,但无法打开移动数据。我尝试使用以下代码...

public void TurnOnInternet()
{
AlertDialog.Builder alert = new AlertDialog.Builder(_context);
alert.SetTitle(Resource.String.networktitle);
alert.SetMessage("Select the etwork you Like to Enable from the following");
alert.SetPositiveButton("Enable Wifi", (senderAlert, args) =>
{
Intent tntent = new Intent(Android.Provider.Settings.ActionSettings);
_context.StartActivity(tntent);
_context.Finish();
WifiManager wifi = (WifiManager)GetSystemService(Context.WifiService);
wifi.SetWifiEnabled(true);

_context.Finish();
});
alert.SetNegativeButton("Enable Mobile Date", (senderAlert, args) =>
{
setMobileDataState();
try
{
TelephonyManager telephonyService = (TelephonyManager)GetSystemService(Context.TelephonyService);
Method setMobileDataEnabledMethod = telephonyService.Class.GetDeclaredMethod("getDataEnabled");
if (null != setMobileDataEnabledMethod)
{
setMobileDataEnabledMethod.Invoke(telephonyService, true);
setMobileDataEnabledMethod. .SetDataEnabled(true);
}
_context.Finish();
}
catch (Exception ex)
{ }
});

Dialog dialog = alert.Create();
dialog.Show();
}
public void setMobileDataState()
{
try
{
Class ITelephonyClass;
TelephonyManager telephonyService = (TelephonyManager)GetSystemService(Context.TelephonyService);
Method setMobileDataEnabledMethod = telephonyService.Class.GetDeclaredMethod("getDataEnabled");
ITelephonyStub = setMobileDataEnabledMethod.Invoke(telephonyService);
ITelephonyClass = Class.ForName(ITelephonyStub.Class.Name);

if (null != setMobileDataEnabledMethod)
{
Method dataConnSwitchmethod = ITelephonyClass.GetDeclaredMethod("enableDataConnectivity");

setMobileDataEnabledMethod.Invoke(telephonyService, true);
setMobileDataEnabledMethod. .SetDataEnabled(true);
telephonyService.SetDataEnabled(true);
setMobileDataEnabledMethod.SetDataState(true);
}
_context.Finish();
}
catch (Java.Lang.Exception ex)
{ }

}

这是我正在使用但无法完成工作的代码。移动数据部分完全不工作,所以请帮助我在不导航到设置的情况下从我的应用程序本身打开移动数据

如果你也知道android,请告诉我解决方案,以便我可以转换代码

最佳答案

I am trying to switch on mobile data or wifi from a popup in my application but unable to switch on mobile data.

我认为移动数据和 wifi 是不同的东西。对于设置 Wifi 状态,很简单,您可以像这样编写代码:

public void TurnOnInternet(bool enabled)
{
var wm = this.GetSystemService(Context.WifiService) as WifiManager;
if (enabled)
{
if (!wm.IsWifiEnabled)
wm.SetWifiEnabled(true);
}
else
{
if (wm.IsWifiEnabled)
wm.SetWifiEnabled(false);
}
}

对于此操作,您需要在您的 list 中获得以下权限:

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

对于移动数据,首先,启用/禁用移动网络只能通过root权限来完成,确保您的设备支持它。那么从Android 5.0版本开始,你可以查看答案here ,其他版本可以关注这个answer .

这项工作您可能需要的权限如下:

<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />

因为我没有root手机测试,虽然我制作了一个demo,但我不确定它是否有效,所以我不会在这里发布相关代码。

关于android - 如何从 xamarin.android mono 中的弹出窗口以编程方式打开移动数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44715132/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com