У меня та же проблема, что и у других, но я не могу заставить свой код работать.
У меня есть классы java, Test.java и TestService.java, и когда я пытаюсь запустить Service или bind Service, я всегда получаю ошибку, указанную выше. Я попробовал рекомендованные стандартные решения здесь, но это не сработало. Я попытаюсь переименовать java файлы и запустить новый проект, чтобы увидеть, работает ли это так, как указано здесь.
Затем я увидел эту ссылку Vogella, что у меня должен быть зарегистрированный пользователь Google на устройстве. Это то, что моя проблема, или я путаю ошибки (может быть, "intent.REGISTER" относится к чему-то еще).
Любые предложения по этому поводу будут высоко оценены.
4,3. Зарегистрируйте свое приложение
Запустите приложение, поддержите зарегистрированного пользователя и нажмите кнопку. Проверьте регистрационный номер LogCat.
Если вы видите следующее сообщение:
"Невозможно запустить службу Intent {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>
Попробуйте использовать весь код пакета для вашего сервиса, что я всегда делаю, и он всегда работал до сих пор.
<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);
}
... <service android:enabled="true" android:name=".AccelerometerService"></service> <activity android:name="TremCam"></activity> </application>
Необходимо указать пространство имен в атрибуте name в некоторой форме, чтобы:
<service android:name="edu.darts.neuromobi.TestService"></service>
или возможно:
<service android:name=".TestService"></service>