Qual o número do meu celular?

Pessoal… Tem alguma maneira de descobrir o número do próprio celular (via código, não ligando pra algum número)…

Eis o problema:
Tenho uma aplicação pra celular que uma pessoa envia um arquivo para outra…
Então fica cadastrado no banco de dados algo do tipo:

Ex.:
Nome Arquivo: arquivox.xls
De: (número de quem envia)
Para: (número que tá sendo enviado)

Ae o otro celular vai no banco e faz um select * onde o Para = o número do dele próprio…

Mas como eu descubro o número do [color=red]próprio celular[/color]? Tem algum método, classe, sei lá, que ajuda a fazer isso?

Postei aqui em Java Avançado, porque se não tiver um método, classe, sei lá, queria saber como que a própria telefonia faz isso… Descobrir o número…
Ou então o Skype… Você liga e ele mostra o número
Pensei em fazer o telefone enviar algum pacote para meu servidor, com uma página em java, e de lá ele reconhecer a origem, e retornar algo com o número do celular…
Essa origem não necessita ser o número do celular, pode ser o ENDEREÇO MAC dele (porque é só dele também)… Mas para isso preciso descobrir o endereço mac… Alguém se o servidor reconhece o endereço de qualquer coisa que envie pacotes pra ele?

Sei lá se to falando besteira, mas é que to precisando urgente disso!

Vlws

TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
  mPhoneNumber = tMgr.getLine1Number();

Voce precisa da permissão READ_PHONE_STATE

Vixi… Tava esperançoso, mas não deu certo não… rs

Mas axo que tem algo de estranho no celular…
Eu vou em Menu > Configurações > Sobre o Telefone > Estado

Ae dentre vários itens, tem escrito Número de telefone, e está Desconhecido…
Esse código deve pegar o número do mesmo local que ele, por isso fica Desconhecido…

Verifiquei se era algo de privacidade, mas não é não =X

Pra falar a verdade, aqui onde testo também fica Desconhecido.

Achei que em outro lugar funcionaria. Estranho.

Fiz assim:

[code]
TelephonyManager tMgr =(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
String simcountrycode = tMgr.getSimCountryIso();
String simoperator = tMgr.getSimOperatorName();
String simserialno = tMgr.getSimSerialNumber();

	       AlertDialog alerteDialog = new AlertDialog.Builder(this).create();
		alerteDialog.setTitle("Seu numerooo");
		alerteDialog.setMessage("O SEU NUMERO EH " + mPhoneNumber + " e " + simcountrycode + " e " + simoperator+ " e " + simserialno);
		alerteDialog.setButton("Haha", new DialogInterface.OnClickListener() {
		    public void onClick(DialogInterface dialog, int which) {
		        return;
		 } });
		 alerteDialog.show();[/code]

Ele fica vazio, mas o resto mostra certinho…
simcountrycode retorna br
simoperator retorna TIM
e simserialno retorna o número de série dele…

Só o número que não aparece…
E pelo jeito, bastante gente tá com o mesmo problema:
http://code.google.com/p/android/issues/detail?id=4339

A explicação do problema: http://groups.google.com/group/android-beginners/browse_thread/thread/c7023a19b02a066a?pli=1

A solução: Não tem -.-

Cara pega o Imei do celular, se não precisar ser o numero o imei ja serve pra vc

da uma olhada nesse link:

http://mobilepit.com/10/how-to-get-imei-number-in-j2me-javame.html

vc so precisa especificar a fabricante, mas isso vc pode pegar tbm via codigo, a MIDP ja te da esse suporte.

eh Android =X

Um hack conhecido para se obter o numero de celular é fazer a aplicação enviar um sms para o servidor, junto com algum token para identificar o remetente. Realmente não dá pra obter o numero do chip programaticamente.