如何在应用程序启动时在TextView中显示Android设备的MAC地址

时间:2013-01-02 09:45:05

标签: java android mac-address

我有一个平板电脑用户将登录的基本登录屏幕,我想在应用程序启动时在屏幕上显示该特定设备的MAC地址。

后来随着我对Android开发的了解越来越多,而且我学得很慢,我想通过RESTful webservice将用户名,他们登录的时间以及MAC地址插入到数据库中。但是现在我只是想显示MAC地址。

我找到了一些从WIFI管理器获取MAC地址的代码,您将在下面的代码中看到并将其放入方法中。似乎当我在onCreate方法中调用此方法时,应用程序会发生炸弹袭击。什么是正确的工作流程?我应该从onCreate()方法中调用showMACAddress()吗?应该是在try / catch ??

顺便说一句,我正在使用Android 4.0的7英寸Kenton平板电脑测试这个,我在Android Manifest文件中指出该应用只是横向。 提前谢谢。

这是我的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);
    }

}

这是我的Android GUI XML

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

1 个答案:

答案 0 :(得分:2)

setText()应该有效,您不必将macAddrString转换为CharSequence(CharSequence是一个接口,String实现它)。我相信您的应用崩溃的原因是因为您* 未将权限* 添加到AndroidManifest.xml文件中。

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>放在AndroidManifest.xml中,您的问题应该得到解决。