タブレットユーザーがログインする基本的なログイン画面があります。アプリの起動時にその特定のデバイスのMACアドレスを画面に表示したいと思います。
後でAndroid開発について詳しく学び、ゆっくりと学習しているので、RESTful Webサービスを介して、ユーザー名、ログイン時刻、およびMACアドレスをデータベースに挿入したいと思います。しかし今のところ、私はMACアドレスを表示しようとしています。
以下のコードにあるように、WIFIマネージャーからMACアドレスを取得するためのコードを見つけて、メソッドに配置しました。onCreateメソッドでこのメソッドを呼び出すと、アプリが爆撃するようです。正しいワークフローは何ですか?onCreate()メソッド内からshowMACAddress()を呼び出す必要がありますか?それは試して/キャッチする必要がありますか?
ところで、私は仕事中にAndroid 4.0を搭載した7インチのKentonタブレットでこれをテストしており、Androidマニフェストファイルでアプリが横向きのみであることを指定しました。前もって感謝します。
これが私のJavaクラスです
package za.co.crcode.Inspector;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.TextView;
public class DeviceLogin extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_device_login);
showMACAddress();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_device_login, menu);
return true;
}
public void showMACAddress(){
WifiManager wifiMan = (WifiManager) this.getSystemService(
Context.WIFI_SERVICE);
WifiInfo wifiInf = wifiMan.getConnectionInfo();
String macAddr = wifiInf.getMacAddress();
TextView loginDeviceMACAddress = (TextView)findViewById(R.id.LoginDeviceMACAddress);
CharSequence macAddy = (String) macAddr.toString();
loginDeviceMACAddress.setText(macAddy);
}
}
これが私のAndroidGUIXMLです
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DeviceLogin" >
<LinearLayout
android:id="@+id/LoginFieldsLayoutLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerVertical="true"
android:layout_marginTop="5dp"
android:layout_marginLeft="50dp"
android:gravity="left"
android:orientation="vertical" >
<TextView
android:id="@+id/LoginScreenHeading"
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_marginTop="20dp"
android:text="@string/loginScreenHeading"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/LoginFirstName"
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_marginTop="10dp"
android:ems="10"
android:hint="@string/loginFirstNameHint"
android:inputType="textPersonName"
android:text="@string/loginFirstName" />
<EditText
android:id="@+id/LoginLastName"
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_marginTop="10dp"
android:ems="10"
android:hint="@string/loginLastNameHint"
android:inputType="textPersonName"
android:text="@string/loginLastName" />
<EditText
android:id="@+id/LoginEmployeeID"
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_marginTop="10dp"
android:ems="10"
android:hint="@string/loginEmployeeIDHint"
android:inputType="number"
android:text="@string/loginEmployeeID" />
<EditText
android:id="@+id/loginPassword"
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_marginTop="10dp"
android:ems="10"
android:hint="@string/loginPasswordHint"
android:inputType="textPassword" >
</EditText>
<TextView
android:id="@+id/LoginMACAddressLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:text="@string/LoginMACAddressLabel"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/LoginDeviceMACAddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:text="@string/LoginMACAddress"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
<LinearLayout
android:id="@+id/LoginFieldsLayoutRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="75dp"
android:orientation="vertical" >
<ImageView
android:id="@+id/LoginIdPic"
android:contentDescription="@string/EmployeeImage"
android:layout_width ="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:maxWidth="200dp"
android:maxHeight="200dp"
android:scaleType="fitCenter"
android:src="@drawable/idpic" >
</ImageView>
<Button
android:id="@+id/LoginScreenButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/loginButtonText"
android:layout_gravity="center" />
</LinearLayout>
</RelativeLayout>
これが私のStrings.XMLです
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Inspector</string>
<string name="hello_world">Hello World!</string>
<string name="menu_settings">Settings</string>
<string name="loginScreenHeading">Device Login</string>
<string name="loginFirstName">First Name</string>
<string name="loginFirstNameHint">Enter your first name</string>
<string name="loginLastName">Last Name</string>
<string name="loginLastNameHint">Enter your last name</string>
<string name="loginEmployeeID">Employee ID</string>
<string name="loginEmployeeIDHint">Enter your employee ID</string>
<string name="loginPasswordHint">Password</string>
<string name="LoginMACAddressLabel">Device ID</string>
<string name="LoginMACAddress">00:00:00:00</string>
<string name="loginButtonText">Login</string>
<string name="EmployeeImage">Employee_image</string>
</resources>