Android服务:无法启动服务意图{act = edu.darts.neuromobi.TestService}:未找到

时间:2011-12-05 22:00:48

标签: android service android-intent

我遇到了其他人遇到的同样问题,但我无法让我的代码工作。

我必须使用java类,Test.java和TestService.java,当我尝试启动Service或绑定Service时,我总是会遇到上面列出的错误。我在here尝试了推荐的标准解决方案,但它没有用。我将尝试重命名java文件并启动一个新项目,看看它是否如here中所述。

然后我在Vogella看到这个link,我必须在设备上注册一个谷歌用户。这是我的问题是什么,或者我是否混淆了错误(也许'intent.REGISTER'指的是其他东西)。

对此有任何建议将不胜感激。

  

4.3。注册您的申请

     

运行您的应用程序,维护您的注册用户并按下   按钮。检查LogCat的注册ID。

     

如果您看到以下消息:

     

“无法启动服务意图   {act = com.google.android.c2dm.intent.REGISTER ...}:找不到“

我在手机和模拟器上试过这个。

权限:

<application android:icon="@drawable/gyroscopic" android:label="@string/app_name">
...
<activity android:name="Test"></activity>

<service android:name="TestService"></service>  
....
</application>

2 个答案:

答案 0 :(得分:0)

尝试将整个软件包代码用于您的服务,这就是我一直以来所做的事情,而且到目前为止它始终有效。

<service
    android:enabled="true"
    android:name="com.mobowski.appfrag.service.MusicService" >
</service>

编辑以启动/绑定服务。

我通常这样做:

启动服务

// This is in the onCreate of my main screen, but this would work in a button
startService(
            new Intent(this, Service.class));

在服务中

绑定到服务时将使用此

// Field of service
private final IBinder mBinder = new MyBinder(); 

// We return the binder class upon a call of bindService
    @Override
    public IBinder onBind(Intent arg0) {
        return mBinder;
    }

    public class MyBinder extends Binder {
        public MusicService getService() {
            return MusicService.this;
        }
    }

绑定到服务

为此,我使用了一些我从一个例子中获取的代码,但到目前为止它们从未让我失望。

private ServiceConnection mConnection = new ServiceConnection() {

        public void onServiceConnected(ComponentName className, IBinder binder) {
            s = ((MusicService.MyBinder) binder).getService();
            Toast.makeText(this, "Connected", Toast.LENGTH_SHORT)
                    .show();
            // Little Toast to make sure we connected

        }

        public void onServiceDisconnected(ComponentName className) {
            s = null;
        }
    };

    void doBindService() {
        bindService(
            new Intent(this,
                    MusicService.class), mConnection,
            Context.BIND_AUTO_CREATE);

    }

答案 1 :(得分:0)

您需要以某种形式在name属性中提供名称空间:

<service android:name="edu.darts.neuromobi.TestService"></service>

或可能:

<service android:name=".TestService"></service>