草庐IT

Android SIP 堆栈 : NullPointerException on register

coder 2023-12-13 原文

我一直在运行 2.3.3 的 HTC Desire Z 上编写代码并且它工作正常 - 现在我在另一台设备(运行 2.3.4 的 Nexus One)上测试它,它崩溃了。这是代码:

if (me == null || sipManager == null || listener == null){
    Log.e("OH","NO");
}

sipManager.register(me, 30, listener);

我传递给 sipManager.register 的所有东西都不是空的(从未调用日志),但这是我的堆栈跟踪:

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to create service com.myapp.Service: java.lang.NullPointerException
    at android.app.ActivityThread.handleCreateService(ActivityThread.java:1955)
    at android.app.ActivityThread.access$2500(ActivityThread.java:117)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:985)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3683)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
    at android.net.sip.SipManager.register(SipManager.java:474)
    at com.myapp.Service.onCreate(Service.java:159)
    at android.app.ActivityThread.handleCreateService(ActivityThread.java:1945)
    ... 10 more

查看 Android 源代码似乎也没有揭示任何明显的东西 - 我传递给它的所有内容在另一台设备上都是有效的。

两个设备都运行 2.3+,并且都启用了 SIP 堆栈:

if (SipManager.isVoipSupported(this) && SipManager.isApiSupported(this)){

编辑:

这是复制问题的完整 Activity :

public class SIPTest extends Activity {

    public SipManager sipManager = null;
    SipProfile me = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        if (SipManager.isVoipSupported(this) && SipManager.isApiSupported(this)){
            // SIP is supported, let's go!
            Log.e("SIP", "SUPPORTED");
            sipManager = SipManager.newInstance(this);


            String username = "username";
            String password = "password";
            String domain = "example.org";

            try {
                SipProfile.Builder builder = new SipProfile.Builder(username, domain);
                builder.setPassword(password);
                builder.setDisplayName(username);
                builder.setProfileName(username + "@" + domain);
                me = builder.build();

                sipManager.register(me, 30, new SipRegistrationListener() {
                        public void onRegistering(String localProfileUri) {
                            Log.e("SIP","Registering with SIP Server...");
                        }

                        public void onRegistrationDone(String localProfileUri, long expiryTime) {
                            Log.e("SIP","Ready!");
                        }

                        public void onRegistrationFailed(String localProfileUri, int errorCode,
                                String errorMessage) {
                            Log.e("SIP","Registration failed. " + errorMessage + " ("+errorCode+") - " + localProfileUri);
                        }
                    });
            } catch (ParseException pe) {
                Log.e("SIP","Connection Error.");
            } catch (SipException se) {
                Log.e("SIP","Connection error.");
            }

        }

    }
}

最佳答案

你只需放置 sipManager.open(me);在执行 sipManager.register() 之前,因为需要创建新的 sip session 。

保重!

关于Android SIP 堆栈 : NullPointerException on register,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7041333/

有关Android SIP 堆栈 : NullPointerException on register的更多相关文章

  1. ruby - 堆栈级别太深(SystemStackError) - 2

    我有Sinatra应用程序,需要测试我的应用程序。features/support/env.rb:require_relative"../../application"require"capybara"require"capybara/cucumber"require"rspec"WorlddoCapybara.app=ApplicationincludeCapybara::DSLincludeRSpec::Matchersendfeatures/one.feature:Feature:TesthomepageInordertomakesurepeoplecanopenmysiteIw

  2. ruby-on-rails - Rails Asset Pipeline 更好的错误或堆栈跟踪 - 2

    刚刚将应用程序从rails3.0.9升级到3.2.1,当我运行bundleexecrakeassets:precompile时出现错误,这很好,但是回溯没有告诉我在哪里语法问题来self的css或scss文件。我尝试对“0ee5c0e69c92af0”进行greping,但该字符串没有出现在我的项目中。bundleexecrakeassets:precompile:allRAILS_ENV=productionRAILS_GROUPS=assets--trace**Invokeassets:precompile:all(first_time)**Executeassets:precom

  3. python - 保存堆栈? - 2

    我只是好奇,是否可以将程序的所有变量和当前状态转储到一个文件中,然后在另一台计算机上恢复它?!假设我有一个用Python或Ruby编写的小程序,给定特定条件,它会将所有当前变量和当前状态转储到一个文件中。稍后,我可以在另一台机器上再次加载它,然后返回它。类似VM快照功能。我在这里看到过这样的问题,但与Java相关,保存当前的JVM并在不同的JVM中再次运行它。大多数人都说没有那样的东西,只有Terracotta有一些东西,仍然不完美。谢谢。阐明我要实现的目标:给定2个或更多RaspberryPi,我试图在Pinº1上运行我的软件,但是当我需要用它做一些不同的事情时,我需要将软件移动到P

  4. ruby - Ruby 中的堆栈级别太深 - 2

    classMyClassdefmethod_missing(name,*args)name=name.to_s10.timesdonumber=rand(100)endputs"#{number}and#{name}"endend你好,我正在练习ruby​​,但在这个非递归函数中,我在使用这段代码时遇到堆栈级别太深的错误。x=MyClass.Newx.try 最佳答案 您的代码的问题是times()中定义的number变量超出了method_missing()范围。因此,当该行被执行时,Ruby将其解释为对self的方法调用。在正常

  5. ruby - 来自 rails 3 中 therubyracer/v8 的 javascript 错误的堆栈跟踪 - 2

    我正在使用therubyracer和v8在Rails3应用程序中运行一些javascript如果出现任何问题,错误消息将通过通常的Rails3异常通知流程通过电子邮件发送给我。但是,我返回的错误消息非常模糊,堆栈跟踪不会进入javascript文件本身。这是可以理解的,但是很难调试。这是一个例子:V8::JSError:Cannotreadproperty'0'ofundefinedbacktrace:lib/libraryname.rb:32:in`function_that_calls_v8'lib/libraryname.rb:18:in`fetch_and_update'app

  6. ruby - 如何打印 Ruby 1.9 进程的运行时堆栈跟踪? - 2

    有什么方法可以打印Ruby1.9.x进程的运行时堆栈跟踪吗?我知道Ruby1.8有一个名为pstack的实用程序,但该项目似乎在几年前就被放弃了:https://github.com/ice799/pstack.Ruby1.9是否存在类似的东西?非常感谢!编辑:我有兴趣使用外部工具生成堆栈跟踪(不在与Ruby进程相同的内存空间中运行)。正如@mosch所指出的,Kernal#caller方法在正在运行的Ruby进程中运行。您甚至可以构建对捕获进程信号并打印堆栈跟踪的Ruby代码的支持:Signal.trap("SIGTERM"){pcaller}引用:http://www.ruby-d

  7. ruby - 如何在 rake TestTask 失败后抑制巨大的堆栈跟踪? - 2

    我正在为一个项目设置一个rakefile,并且我已经定义了一些rakeTestTasks。我运行了一个简单的健全性测试,该测试执行assert_equal(1,2)只是为了检查输出,除了通常的失败输出之外,我还遇到了这样一团糟:rakeaborted!Commandfailedwithstatus(1):[/usr/bin/ruby-w-I"lib:.""/usr/lib/ruby/...]/usr/lib/ruby/1.9.1/rake.rb:993:in`blockinsh'/usr/lib/ruby/1.9.1/rake.rb:1008:in`call'/usr/lib/ruby

  8. ruby - 在 heroku cedar 堆栈上部署 sinatra 应用程序(使用 config.ru) - 2

    我正在尝试重构我的sinatra代码以将我的主文件分成单独的文件,使用来自thisresponse的一些技巧,我在部署到heroku时遇到了麻烦。以前我没有config.ru文件,只是使用了我的Procfile,它是:web:bundleexecrubyweb.rb-p$PORT根据thisarticle.从重构开始,我现在将Procfile更改为web:bundleexecthin-Rconfig.rustart-p$PORT我的config.ru文件是root=::File.dirname(__FILE__)require::File.join(root,'web')runMyAp

  9. ruby-on-rails - activesupport 回调中的堆栈级别太深 - 2

    我在Rails3应用程序中收到SystemStackError。我拥有的所有信息都是无用的一行堆栈跟踪(从日志中获取):SystemStackError(stackleveltoodeep):activesupport(3.2.3)lib/active_support/callbacks.rb:409所以问题是我如何查看完整的堆栈跟踪?注意:我不关心为什么会发生这种情况,我只想知道它发生在何处。使用:Rails3.2.3,Unicorn。谢谢。 最佳答案 如果您在before_save或after_save中更新事件记录,它将继续循

  10. Ruby 堆栈级别太深异常不是来自递归无限循环 - 2

    编辑:(已解决)实际上它可能是因为无限循环而引发的我正在编码,在添加一个方法后我得到了这个:user_name@the_computer:/media/ECC3-C3B0/Prog/mts/src/mts$raketest--trace**Invoketest(first_time)**Executetest/home/user_name/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:stackleveltoodeep(SystemStackError)rakeabo

随机推荐