我正在尝试从广播中启动服务,但出于某种原因我的服务永远不会被调用。 这是我的接收者:
private void initReceiver() {
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("telecom.IT.DigiCARE.REC")) {
Log.d("MainActivity", "Intent received from server!");
byte[] data = intent.getByteArrayExtra("Data");
String params = intent.getStringExtra("Params");
Intent i = new Intent(MainActivity.this, DecodeService.class);
i.putExtra("Data", data);
i.putExtra("Params", params);
startService(i);
}
}
};
registerReceiver(receiver, new IntentFilter("telecom.IT.DigiCARE.REC"));
}
这是我的服务:
public class DecodeService extends Service {
@Override
public void onStart(Intent intent, int startId) {
String params = intent.getStringExtra("Params");
byte[] data = intent.getByteArrayExtra("Data");
decodeMessage(params, data);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String params = intent.getStringExtra("Params");
byte[] data = intent.getByteArrayExtra("Data");
decodeMessage(params, data);
return START_STICKY;
}
}
我期待错误出现在清单中的某处,但我看不到它。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.telecomIT.digicare"
android:versionCode="1"
android:versionName="1.0" >
<services
android:name=".DecodeService"
android:enabled="true" />
这不是因为广播不起作用,因为调用了startService,但没有任何反应..
答案 0 :(得分:0)
我想我发现了问题..我有服务* s *而不是服务。 奇怪的是,这没有产生皮棉错误或其他什么。
答案 1 :(得分:0)
您的声明必须在声明指定服务包的地方后声明。试试吧:
<meta-data <!-- First -->
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<services <!-- Second -->
android:name=".DecodeService"
android:enabled="true" />