Android InstantiationException: Kein leerer Konstruktor
Ich erhalte eine InstantiationException, wenn ich versuche, einen IntentService zu starten. Ich habe hier andere Themen angeschaut, aber die Antworten lösen mein Problem nicht. Meine Serviceklasse hat einen Standardkonstruktor. Hier ist meine Serviceklasse. (Es ist in einer Datei FindMeService.java definiert und das ist die einzige Klasse in dieser Datei.)
package com.findme.findme;
import android.app.IntentService;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager;
public class FindMeService extends IntentService {
/*public static class Constants {
}*/
public static final String BROADCAST_ACTION = "com.findme.findme.BROADCAST";
public static final String ACTION_REGISTER_USER = "com.findme.findme.REGISTER_USER";
public static final String KEY_USERID = "user_id";
public static final String KEY_USERPASS = "user_pass";
public static final String RESPONSE_FOR = "response_for";
public static final String RESPONSE_VAL = "response_val";
public FindMeService() {
super("FindMeService");
}
@Override
protected void onHandleIntent(Intent intent) {
// TODO handle intent
if(intent.getAction() == ACTION_REGISTER_USER) {
CommunicationsManager commManager = new CommunicationsManager();
// get extras from the intent
Bundle details = intent.getExtras();
String userId = (String) details.get(KEY_USERID);
String password = (String) details.get(KEY_USERPASS);
// send the register request
String result = commManager.Register(userId, password);
// put the result into an intent and broadcast it
Intent resultIntent = new Intent(BROADCAST_ACTION);
resultIntent.putExtra(RESPONSE_FOR, ACTION_REGISTER_USER)
.putExtra(RESPONSE_VAL, result);
LocalBroadcastManager.getInstance(this).sendBroadcast(resultIntent);
}
}
}
Ich starte den Dienst, indem ich in einer Aktivität startService () aufrufe. Die Protokolle lauten wie folgt:
E/AndroidRuntime( 1048): java.lang.RuntimeException: Unable to instantiate service
com.findme.findme.FindMeService: java.lang.InstantiationException: can't instantiate
class com.findme.findme.FindMeService; no empty constructor
So starte ich den Dienst
...
Intent registerUserIntent = new Intent(this, FindMeService.class);
registerUserIntent
.setAction(FindMeService.ACTION_REGISTER_USER);
registerUserIntent.putExtra(FindMeService.KEY_USERID,
phoneNumber).putExtra(FindMeService.KEY_USERPASS,
password);
// start the service
startService(registerUserIntent);
...
Hier ist ein relevanter Teil der Manifestdatei
....
<service
android:name=".FindMeService"
android:exported="false"
android:enabled="true"/>
...