首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NumberFormatException

NumberFormatException
EN

Stack Overflow用户
提问于 2013-01-05 09:31:10
回答 2查看 957关注 0票数 0

我正在尝试开发一个应用程序,它将从拨号盘中提取一个号码,然后呼叫另一个号码。但是我得到了一个号码格式异常,我想要呼叫的电话号码。

这就是代码。

代码语言:javascript
复制
    public class testing extends BroadcastReceiver {

public void onReceive(Context context, Intent intent) {
     if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {


              // get phone number from bundle
                String phoneNumber = intent.getExtras().getString(Intent.EXTRA_PHONE_NUMBER);

               // Toast.makeText(context, "Call:  "+phoneNumber+" - ABORTING CALL.", Toast.LENGTH_LONG).show();
              //  
                if (phoneNumber == "") {
                    phoneNumber = "0";
                }
                    int checknumber  = Integer.parseInt(phoneNumber);

                if (checknumber == 4444) {
                    Toast.makeText(context, "hello", Toast.LENGTH_LONG).show();
                   setResultData(null);

                  Intent callIntent = new Intent(Intent.ACTION_CALL);
               callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                   callIntent.setData(Uri.parse("tel:6768886877"));
                   context.startActivity(callIntent);




                }
                else {
                    Toast.makeText(context, "kkkk", Toast.LENGTH_LONG).show();

                }
          }


        }

       }

下面是我的错误日志

代码语言:javascript
复制
    01-04 20:16:24.941: E/AndroidRuntime(28536): java.lang.RuntimeException: Unable to start receiver vu.alhadji.vudial.testing: java.lang.NumberFormatException: Invalid int: "2156689451"
    01-04 20:16:24.941: E/AndroidRuntime(28536):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2126)
    01-04 20:16:24.941: E/AndroidRuntime(28536):    at android.app.ActivityThread.access$1500(ActivityThread.java:123)
    01-04 20:16:24.941: E/AndroidRuntime(28536):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1197)
01-04 20:16:24.941: E/AndroidRuntime(28536):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-04 20:16:24.941: E/AndroidRuntime(28536):    at android.os.Looper.loop(Looper.java:137)
01-04 20:16:24.941: E/AndroidRuntime(28536):    at android.app.ActivityThread.main(ActivityThread.java:4424)
01-04 20:16:24.941: E/AndroidRuntime(28536):    at java.lang.reflect.Method.invokeNative(Native Method)
01-04 20:16:24.941: E/AndroidRuntime(28536):    at java.lang.reflect.Method.invoke(Method.java:511)
01-04 20:16:24.941: E/AndroidRuntime(28536):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:812)
01-04 20:16:24.941: E/AndroidRuntime(28536):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:579)
01-04 20:16:24.941: E/AndroidRuntime(28536):    at dalvik.system.NativeStart.main(Native Method)
01-04 20:16:24.941: E/AndroidRuntime(28536): Caused by: java.lang.NumberFormatException: Invalid int: "2156689451"
01-04 20:16:24.941: E/AndroidRuntime(28536):    at java.lang.Integer.invalidInt(Integer.java:138)
01-04 20:16:24.941: E/AndroidRuntime(28536):    at java.lang.Integer.parse(Integer.java:378)
01-04 20:16:24.941: E/AndroidRuntime(28536):    at java.lang.Integer.parseInt(Integer.java:366)
01-04 20:16:24.941: E/AndroidRuntime(28536):    at java.lang.Integer.parseInt(Integer.java:332)
01-04 20:16:24.941: E/AndroidRuntime(28536):    at vu.alhadji.vudial.testing.onReceive(testing.java:24)
01-04 20:16:24.941: E/AndroidRuntime(28536):    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2119)
01-04 20:16:24.941: E/AndroidRuntime(28536):    ... 10 more
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-05 09:38:46

这是因为对于int来说,6768886877这个数字太大了。

请改用long

代码语言:javascript
复制
long checkNumber = 0l;

try{
  checkNumber = Long.parseLong (phoneNumber);
}
catch (NumberFormatException e)
{
  e.printStackTrace();
}
票数 0
EN

Stack Overflow用户

发布于 2013-01-05 09:42:09

对于整数来说,2156689451太大了(范围从-2^31≈-2,147E9到+2^31-1≈2,147E9,而您的数字是~2,15E10)

使用long代替int...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14167586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档