Я вижу следующую ошибку в DDMS при попытке использовать действие CheckBox на MyActivity "для запуска службы под названием" MyService ":
W/ActivityManager( 73): Unable to start service Intent { cmp=com.example.android.myprogram/.MyService }: not found
Я использовал учебник http://developer.android.com/resources/tutorials/views/hello-formstuff.html и добавил предоставленный код в конец моего метода onCreate (). У меня есть классы, указанные отдельно в MyActivity.java и MyService.java.
package com.example.android.myprogram;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
public class MyActivity extends Activity {
private static final String TAG = "MyActivity";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final CheckBox checkbox = (CheckBox) findViewById(R.id.checkbox);
checkbox.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// Perform action on clicks, depending on whether it's now checked
if (((CheckBox) v).isChecked()) {
// TODO: Add code to START the service
Log.d(TAG, "startService from checkbox");
startService(new Intent(MyActivity.this, MyService.class));
} else {
// TODO: Add code to STOP the service
Log.d(TAG, "stopService from checkbox");
stopService(new Intent(MyActivity.this, MyService.class));
}
}
});
}
}
В моем файле манифеста есть следующее, в котором я также опробовал полное пространство имен, короткое имя, используя фильтр намерений для другого поиска и т. Д. Я не говорю, что здесь правильно. Я просто оставил его на остановке.
<service android:name=".MyService">
<intent-filter><action android:name="com.example.android.myprogram.MyService"></action>
</intent-filter>
</service>
И, наконец, мой сервис, который я решил сократить до минимума:
package com.example.android.myprogram;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class MyService extends Service {
private static final String TAG = "MyService";
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
Log.d(TAG, "onCreate");
//code to execute when the service is first created
}
@Override
public void onDestroy() {
Log.d(TAG, "onDestroy");
//code to execute when the service is shutting down
}
@Override
public void onStart(Intent intent, int startid) {
Log.d(TAG, "onStart");
//code to execute when the service is starting up
}
}
Я очень, очень, очень плохо знаком с программированием на Java / Android и программированием в целом (но учусь), поэтому я уверен, что это ошибка пользователя и, вероятно, здравый смысл для всех остальных. Любые предложения будут великолепны.