-1

システムの電話番号を取得するために次のコードを試しています

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

しかし、それは機能していません。

私の電話では、私は使用します

設定 - >電話について - >ステータス - 電話番号

私が使用できる簡単なアプリはありますか?、私はトルコから書いています。SIMカードは違いますか?

4

3 に答える 3

0

あなたはこのようなことを試すことができます。それは完璧に動作します。

public  String getPhoneNumber(Context context) {
        TelephonyManager mTelephonyMgr;
        mTelephonyMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        String num = mTelephonyMgr.getLine1Number();
        return fillPhoneNumber(num);
    }
private   String fillPhoneNumber(String num) {
    try{
        if (num != null && num.length() > 0) {
            if (num.length() >= 9) {
                num = num.replaceAll("\\D", "");
                if (num.substring(0, 1).equals("8")) {
                    num = "+3" + num;
                } else if (num.substring(0, 1).equals("0")) {
                    num = "+38" + num;
                } else if (num.substring(0, 1).equals("3")) {
                    num = "+" + num;
                }
            }
            return num;
        }

    }catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

注: すべての電話が電話番号を返すわけではありません。

于 2013-03-05T12:24:29.743 に答える
0

すべての通信事業者が電話番号をSIMカードに保存しているわけではありません。使用しているアプローチは、デバイスのSIMカードに携帯電話番号が保存されている場合にのみ機能します。

携帯電話の設定で電話番号が表示されない場合は、SIMカードに保存されていないことを意味します。どうしても必要な場合は、手動でユーザーにアプリに入力するように依頼する必要があります。他に方法はありません。

于 2013-03-05T12:24:35.433 に答える
0

MSISDN を見つける決定論的な方法はありません。上記のアプローチは、SIM が MSISDN を保存している場合にのみ機能します。その他の回避策は、Facebook から番号を取得することです。また、機能する場合と機能しない場合があります。唯一の確実な方法は、http://trumpia.comなどの SMS ゲートウェイ プロバイダーでアカウントを作成し、SMS をフリーダイヤル番号に送信してから、API を呼び出して MSISDN を取得することです。

于 2013-07-29T17:27:06.800 に答える