2011年02月24日

AndroidでMACアドレスを変える


自宅のワイヤレスLANは、セキュリティを高めるためにMACフィルタリングを設定しています。

XperiaでWiFiに繋げるには、XperiaのMACアドレスを設定しなければなりません。もちろんこれでセキュリティはバッチグーのはずですが。

Sponsored Link

ふと思ったのが、


もし、セキュリティで設定したMACアドレス以外の携帯端末で繋がってしまったら嫌ですよね。気持ち悪いし、安心していられない。

そんなわけで、セキュリティのチェックも兼ねて、Xperia(あるいはAndroid)のMACアドレスを一時的に架空の番号に設定して実験してみようと思いました。

もちろん、公衆の無線LANなどでは違法になるので実験できません。自宅のプライベートネットワーク内での実験です。

最初に考えたのは
Xperia(またはAndroid端末)のMACアドレスを変更するアプリをダウンロードしようと思いました。Androidマーケットでいろいろなキーワードで探しますが見つかりません。

うーん、何でないのだろうか?
パソコンではフリーソフトがいろいろあるのに・・・

いくら探してもないので、じゃ作ってみようかな。

我がEclipseのAndroidアプリ開発環境でプログラミングの開始です。

インターネットでMACアドレスをキーワードに調べると、いくつかコードがありました。しかし、いずれもMACアドレスを取得するコードです。

とりあえず、MACアドレスを表示するコードを次のように書き、パソコンのエミュレータ上(エミュレータではMACアドレスはnull表示でしたが)と実機のXperiaで動作確認しました。

コードは次のとおりです。

package com.test.Mactest;

import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.widget.TextView;



public class MacTest extends Activity {
/** Called when the activity is first created. */
@Override



public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

TextView display = new TextView(this);

WifiManager wifiMg = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiIf = wifiMg.getConnectionInfo();
String macAddr = wifiIf.getMacAddress();

display.setText("アドレス"+macAddr);

setContentView(display);

}
}

あまりきれいなコードではありませんが、とりあえず、これでMACアドレスを表示できるはず

それ、実行

あれ、エミュレータでエラーが出てる?

Sorry! ・・・stopped unexpectedly.Please try again

ううう、なんだこれ

javaのソースコードにはエラーが出力されていないので、プログラム的には問題ないのに動かない。

いろいろと半日くらい悩みました。

どうやらアクセス権限が問題らしい。

getMacAddress()を使う場合、システムの根幹を見るのでアクセス許可が必要らしい。

AndroidManifest.xmlを開き、許可タブを開く、するとPermissionsを設定する画面が出る。追加ボタンを押して、Uses Permissionを選ぶ。

ここでPermissionは選ばずに、Uses Permissionを選びます。そして保存ボタンを押してから一度AndroidManifest.xml画面を閉じます。(ここで2時間ほど悩みました。)再度、AndroidManifest.xmlを開くと、右側の欄にNameでPermissionを選択できる画面になるので、android.permission.ACCESS_WIFI_STATEを選び、保存します。

再度実行すると無事に動きます。

エミュレーターと実機のXperiaで動作確認しました。

さて、これでMACアドレスを見れるなら、getMacAddress()をsetMacAddress()で設定できるじゃん・・

と思いつつ、プログラムを修正してみると・・

Sponsored Link
posted by Kunihiko at 15:49 | Comment(1) | TrackBack(0) | 耳寄り情報 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
はじめまして。とりにくという者です。
私はDropad A8というAndroid端末を所有しているのですが、その端末は再起動する度にMACアドレスが変わるという妙なバグを持っています。
そこでMACアドレスの変更を手動ですることでなんとか解決できないかなと考えて、こちらのブログにたどり着きました。
別に上記のバグが解決しなくても、続きがとても気になるので続きの記事を書いていただけると幸いです。
Posted by at 2011年06月04日 14:14
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/187548308

この記事へのトラックバック


現在、このブログは更新を停止しています。
最新の内容は次のブログでお願いします。


新ブログ
趣味は長生きと秘密
http://home.mynsworld.com/



×

この広告は1年以上新しい記事の投稿がないブログに表示されております。