2017-06-23 8 views
2

アプリケーションのポップアップからモバイルデータまたはWi-Fiをオンにしようとしていますが、モバイルデータをスイッチすることはできません。私はこれは私が仕事を成し遂げるために使用したが、できませんでしたコードです...以下のコードを使用してxamarin.android monoのポップアップからモバイルデータをプログラムで有効にするにはどうすればよいですか?

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) 
      { } 

     } 

これをしようとしています。モバイルデータの部分が完全に機能していないので、設定にナビゲートせずに自分のモバイルアプリからモバイルデータを有効にしてください

アンドロイドを知っている場合は、コードを変換できるように解決策を教えてください

答えて

0

私のアプリケーションではポップアップからモバイルデータまたはWi-Fiをオンにしようとしていますが、モバイルデータをオンに切り替えることはできません。

モバイルデータとWi-Fiは別のものだと思います。セットの無線LANの状態の場合、それは簡単です、あなたは次のように例をコードすることができる:

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" /> 

を、まず第一に、モバイルネットワークを有効/無効にすることができるのはルートアクセスのみで、デバイスがサポートしていることを確認してください。その後、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" /> 

私はそう、私はデモを作成したが、私はそれが動作するかわからない、テストのために根ざした携帯電話を持っていない原因私はここに関連コードを掲載しません。

関連する問題