0

Androidで電話をかけるのに問題があります。問題は、私が取得している番号が市外局番の周りに括弧を持っているという事実にあります(206) 555 1234。これが私が使用しているコードです:

final String phone =  listdata.getPhone();
...
            ImageButton phoneButton = (ImageButton) this.findViewById(R.id.phoneButton);
            phoneButton.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v)
                {
                    Uri phoneNum = Uri.parse(phone); 
                    Intent phoneIntent = new Intent(Intent.ACTION_CALL, phoneNum);
                    //phoneIntent.setData(); 

                    DetailActivity.this.startActivity(phoneIntent);

                }
            });

これが私が得ているエラーです:

    09-27 10:01:45.771: E/AndroidRuntime(23422): FATAL EXCEPTION: main
09-27 10:01:45.771: E/AndroidRuntime(23422): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CALL dat=(206) 623-1922 }
09-27 10:01:45.771: E/AndroidRuntime(23422):    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1512)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1384)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at android.app.Activity.startActivityForResult(Activity.java:3248)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at android.app.Activity.startActivity(Activity.java:3359)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at com.uie.top25.seattle.DetailActivity$2.onClick(DetailActivity.java:94)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at android.view.View.performClick(View.java:3526)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at android.view.View$PerformClick.run(View.java:14133)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at android.os.Handler.handleCallback(Handler.java:605)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at android.os.Handler.dispatchMessage(Handler.java:92)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at android.os.Looper.loop(Looper.java:137)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at android.app.ActivityThread.main(ActivityThread.java:4697)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at java.lang.reflect.Method.invokeNative(Native Method)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at java.lang.reflect.Method.invoke(Method.java:511)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
09-27 10:01:45.771: E/AndroidRuntime(23422):    at dalvik.system.NativeStart.main(Native Method)

番号の出典を変更する以外に、私にできることはありますか?

4

3 に答える 3

2

ACTION_CALLインテントは番号を理解しないため、番号のソースを変更する必要があります。したがって、番号を変更するか、Googleがニーズに合わせてAndroidを変更するまで待つことができます:-)

于 2012-09-27T18:07:58.577 に答える
1

注意してください。そうしないと、一部の地域では機能し、他の地域では機能しないものを作成することになります。このことを考慮:

  1. 0044(0)123456789。英国の国際番号。ゼロと角かっこを削除する必要があります。削除しないと、番号がダイヤルされません。

  2. (0)123456789。英国の国内番号。角かっこは削除する必要がありますが、ゼロは削除しないでください。削除しないと、番号がダイヤルされません。

  3. (0)123456789。米国の国内番号ですが、市内通話用です。一部の地域では、通話が同じ地域にある場合は市外局番を削除する必要があります。したがって、一部の地域は123456789を受け入れ、他の地域は456789のみを受け入れます。

そしてそれは続く。イタリアなど一部の国では、携帯電話番号の処理が特に困難です。

E.164仕様を見て、調査を開始します。

于 2012-09-27T18:48:31.813 に答える
1

これに対応するためにAndroidが過去8か月間に変更されたかどうかはわかりませんが、問題は数値のフォーマットではありません。Androidは、括弧、スペース、ダッシュを適切に処理します。問題は、URIに接頭辞「tel:」がないことです。

Uri phoneNum = "tel:" + Uri.parse(phone);
于 2013-06-17T17:49:27.167 に答える