2011-10-28 22 views
6

私はこの一般的な状況でインターネット上の情報を見つけることができないのに驚いています。どうすればインターネット接続を開始できますか?私はConnectivityManagerを見ましたが、それはネットワーク接続を監視するためだけのようです。Android:インターネット接続を確立

PS:電話は根付くので、問題はありません。

+1

は「?どうやってインターネットconnetionを開始することができます」、あなたは何をしたいのか意味? – user370305

+0

私は、プライベートネットワーク上のWiFi接続をプログラマチックに開きたいとしましょう。その後、私はサーバーuplaodに接続したい/データをダウンロードし... – Caner

+3

あなたは監視する必要がありますかwifiを有効にするかどうか?そうでなければ、Wi-Fi接続ダイアログを開き、Wi-Fi設定に移ります。 – user370305

答えて

1

私は、次の解決策が見つかりました:

1)が電話の設定に
2を優先無線LAN/APN(アクセスポイント名)の設定を追加します)有効WIFI/APN
3)接続

無線LANの設定がSTRで自動的に確立されますaightforwardと次のページが、それが行うことができる方法を示しています。

How to programmatically create and read WEP/EAP WiFi configurations in Android?

APNの設定は注意が必要です。 Androidには、これらの設定にアクセスしたり変更したりできる非表示のAPIがあります。これを行うにはReflectionを使用する必要があります。もちろんこれはAndroidの将来のバージョンでは壊れてしまうかもしれません。次のページは、これらの設定を変更/アクセスする方法について説明します。

http://blogs.msdn.com/b/zhengpei/archive/2009/10/13/managing-apn-data-in-google-android.aspx

1

あなたが実際にオフに無線LANをオンまたはでき (もthis articleを参照)が、無線LANがオンになっている場合は、インターネット接続があることを保証するものではありません。

ConnectivityManagerでは、現在の接続状態の検査のみが可能です。これを使用して接続を有効にすることはできません。また、アクティブなネットワーク接続がインターネット接続である場合、ConnectivityManagerには知識がありませんが、自分で確認するのは簡単です(たとえば、this post を参照)。

0

ソケットが必要なものです。あなたの基本情報を得るには、ここでそれを読んでください: http://en.wikipedia.org/wiki/Internet_socketあなたはそれをすべて読む必要はありませんが、ソケットメソッドに慣れるために、少なくとも「実装の問題」をすべて読んでおくことが重要だと思います。もちろん、これらの方法は各プラットフォーム(Windows、Androidなど)ごとに異なる方法で実装されていますが、通常はすべて同じを実行します。だから、それぞれが何をしているかを理解すれば、どのプラットフォームのソケットでも簡単に作業できます。 enter image description here

あなたは、クライアント側にあります。

この図は、(ウィキより)ソケットの使用を実証することができます。ソケットを作成し、サーバのIPアドレスをconnectメソッドで呼び出してください。

個人的には、Android開発でソケットを使用したことはありません。しかし、私はあなたがこのクラスを使用すべきだと思う: http://developer.android.com/reference/java/net/Socket.html

+0

ソケットは解決策ですが、どちらかといえば低レベルです。私は、[ftp](http://stackoverflow.com/questions/1567601/android-ftp-library)や[http接続](http://developer.android.com/reference/java/net)をセットアップする方が簡単かもしれません。 /HttpURLConnection.html) OPが接続しようとしているサーバーに許可されている場合。 – THelper

+0

ソケットが基本です。それらを理解してから、ソケット自体をラップするより高いレベルのクラスを使用する方が良いでしょう。また、これらのクラスは非常に特定のプロトコルで使用されるラッピングソケットです。元のポスターに必要なプロトコルがわからないので、基本的なソケット以外のものを使用するように指示することはできません。 – Jong

+0

しかしこれは質問に答えません。最初に使用するインターネット接続を確立するにはどうすればよいですか? – Caner

2

あなたは単にあなたがこの方法を使用することができます無線LANを有効にする場合:

private boolean changeWifiState(boolean state) { 
    final WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    wifi.setWifiEnabled(state); 
    return wifi.isWifiEnabled(); 
} 

は、このために必要な権限を確認してください。私はあなたがこれらの権限を追加すべきだと思う:

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

でも、3gはどうですか? – Caner

+0

それほど簡単ではありません。この機能はバージョンによって異なります。たとえば、あなたはこれを行う方法をここで見ることができます:http://stackoverflow.com/questions/3644144/how-to-disable-mobile-data-on-android – Yury

+0

そしてあなたは、無線LANとデータ接続は通常同時に使用可能にする。 – Yury

関連する問題