2017-09-13 9 views
1

私はアンドロイドで着信を検出することができましたが、問題はその電話番号の国番号を知りたいのです。国際番号。私は約libphonenumber を知っているが、たとえば、それはすでにパラメータとして"CH"を置くことを知っている詳細を取得特定の電話番号の国名と国コード

String swissNumberStr = "044 668 18 00"; 
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); 
try { 
    PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "CH"); 
} catch (NumberParseException e) { 
    System.err.println("NumberParseException was thrown: " + e.toString()); 
} 

に示すように、手が国コードを取得する前に、それは地域コードを知っている必要があります。番号がわれわれに知られているかどうかわからないので、その番号をどのように分析できるかは分かりません。

答えて

1

は、それが地域の数ではないとあなたがparseの2番目のパラメータのために"ZZ"またはnullを指定することができます(その場合、それは、単なる数とそれからある場所を決定することができ、この世界ではありませんlibです)。

これはdocumentationはこう言われる、私たちからする番号を期待している

地域を。これは、解析対象の番号が国際的な形式で書かれていない場合にのみ が使用されます。この場合の数字の のcountry_codeは、デフォルト領域の として保存されます。番号が で始まることが保証されている場合は、 '+'の後に国のコーリングコードが続きます。「ZZ」またはヌルは となります。

PhoneNumberのインスタンスを作成できたら、次に示すようにgetRegionCodeForNumberと呼ぶことができます。

String swissNumberStr = "044 668 18 00"; 
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); 
try { 
    PhoneNumber numberProto = phoneUtil.parse(swissNumberStr, "ZZ"); 
    System.out.println(phoneUtil.getRegionCodeForNumber(numberProto)); 
} catch (NumberParseException e) { 
    System.err.println("NumberParseException was thrown: " + e.toString()); 
} 
+0

その数は「+」で始まるだろう、それが0321774444または92321774444または0092321774444 –

+0

可能数は00 +で始まる、またはあなたが最初の場所で国を知っているいずれかの保証人はありません。私はそれ以外の場合、意味のあるPhoneNumberインスタンスを作成することはできないと思います。 –

関連する問題