2009-04-14 74 views
6

第一次在這裏發佈海報。使用不同的電話號碼運行多個Android模擬器

我正在研究一個客戶端服務器Android應用程序,並試圖弄清楚如何識別不同的電話/用戶到服務器明確。我第一次嘗試使用SIM卡上的電話號碼。儘管現在我想到了,但現在你的電話號碼有多變改變運營商?我想這取決於國家之間的國家等。

無論如何,我一直在努力弄清楚,因爲我沒有真正的Android手機,如何更改模擬器手機的電話號碼來模擬不同的用戶。是否可能或應該考慮其他識別方式?

回答

5

android_id應該是唯一標識設備,但是,它已經注意到,ID是可以改變的,如果你知道Spoofing android_id

import android.provider.Settings.System; 

String android_id = System.getString(this.getContentResolver(), System.ANDROID_ID); 

在模擬器中,android_id怎麼不具有價值,因此您需要將調試例程放入您自己的值中。

但是,如果您想識別用戶,並讓用戶從具有一個用戶標識的不同設備訪問您的服務,則最好爲其分配一個用戶標識並讓它們使用此用戶標識進行身份驗證憑據。這可以讓他們在許多不同的設備上使用他們的ID,除非您將它與android_id(並且android_id未被欺騙)結合使用,那麼您可以將它們限制爲一個設備。

+0

謝謝,android_id是我尋找的東西。然而,在閱讀其餘的答案並仔細思考之後,我意識到我不想將服務嚴格限制在一臺設備上。 – Janne 2009-04-16 01:58:19

3

您應該使用模擬器提供的號碼。例如。通常第一個運行的模擬器的編號爲5554,第二個爲5555,依此類推。

您可以使用這些號碼撥打電話,從模擬器發送文本消息到模擬器。我認爲,這爲您的目的模擬不同的數字/用戶。

+0

這是一個好主意。有沒有辦法以編程方式獲取模擬器的編號? – Janne 2009-04-16 01:53:06

1

SIM卡信息被硬編碼到emulator-arm和emulator-x86二進制文件中。更改電話號碼(MSISDN)在此博客末尾詳細說明:new linkweb archive

SIM卡存儲每交換兩位數字的電話號碼。因此(電話號碼的前7位)1555521變成了二進制中的515525%d1。雖然有點乏味,但爲每個測試打補丁並不是世界末日。您也可以使用sed:

cd path/to/android-sdk-linux/tools/ 
cp emulator-arm emulator-arm.backup 
sed -i 's/515525%d1/816745%d3/g' emulator-arm 

這會將號碼更改爲1-876-543- [PORT NUMBER]。關於爲什麼在鏈接的博客文章中的詳細信息。