我正在尝试从我的应用程序中的弹出窗口打开移动数据或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也请让我知道解决方案,以便我可以转换代码
答案 0 :(得分:0)
我正在尝试从我的应用程序中的弹出窗口打开移动数据或wifi,但无法打开移动数据。
我认为移动数据和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);
}
}
对于此操作,您需要在清单中获得以下权限:
<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" />
因为我没有带电话进行测试,虽然我创建了一个演示,但我不确定它是否有效,所以我不会在这里发布相关代码。