私は現在、デバイスからユーザーの電話番号を取得する必要があるXamarinフォームプロジェクトに取り組んでいます。 iOSとWindows Phoneでそれを行うことは不可能であることが分かったが、私はまだAndroidでそれをやりたがっているので、インターネット上でAndroid上で動作するはずのコードを見つけた。 MVVMパターンを使用しています。私のViewModelでXamarin.Droid - デバイスの電話番号を取得
、私は電話番号をこのように取得しよう:
このクラスからこのメソッドを呼び出しますstring phoneNumber = DependencyService.Get<IPhoneNumber>().GetPhoneNumber();
:
public class PhoneNumber : IPhoneNumber
{
public string GetPhoneNumber()
{
TelephonyManager mTelephonyMgr;
mTelephonyMgr = (TelephonyManager)Application.Context.GetSystemService(Context.TelephonyService);
return mTelephonyMgr.Line1Number;
}
}
私は、視覚のためのAndroidエミュレータ上で私のアプリを実行すると、スタジオ、それは動作し、私は11桁の数字で構成される電話番号を取得します。しかし、私が実際のデバイスにいるとき、このメソッドは空の文字列( "")を返します。 AndroidManifest.xmlファイルにREAD_PHONE_STATE権限を設定しました。ああ、もちろん、私の実際のデバイスにはSIMカードが差し込まれていて、SIMスロットは1つしかありません。
私は何かを見逃しましたか?できるだけ早く別のデバイスでテストしようとしますが、現時点では不可能です。
ありがとうございました!エマドは私の質問のコメントで言ったように
私はこれまで、ネイティブのアンドロイドプログラムを使用してこれを試みましたが、多くのオペレータがこの情報を提供していないことが示されました。特にイランでは、能動的なオペレーターではない。私はそれが違法であると聞いたことがある! TelegramやViberのようなアプリがあなたの番号を尋ねる理由です。 – Emad
ああ、私は見る!うん、私はViberのような有名なアプリがそれをしないのはなぜだろうか、私は今私の答えを持っていると思っていた。だから私はこの方法で "電話番号"フィールドをあらかじめ入力しようとします。もし私がその番号を手に入れなければ、ユーザーはそれを手動で入力する必要があります。 ありがとう! –