-1

タブレットユーザーがログインする基本的なログイン画面があります。アプリの起動時にその特定のデバイスの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>
4

1 に答える 1

2

は機能するはずであり、からにsetText()キャストする必要はありません(CharSequenceはインターフェイスであり、Stringがそれを実装します)。アプリがクラッシュするのは、ファイルにアクセス許可を追加しないためだと思います。macAddrStringCharSequenceAndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>入れて、あなたAndroidManifest.xmlの問題は解決されるべきです。

于 2013-01-02T10:28:28.133 に答える