Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 已调用startService方法,但未发生任何操作_Android_Android Service - Fatal编程技术网

Android 已调用startService方法,但未发生任何操作

Android 已调用startService方法,但未发生任何操作,android,android-service,Android,Android Service,我正在尝试从广播启动服务,但由于某些原因,我的服务从未被调用。 这是我的听筒: private void initReceiver() { receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("telecom.IT.Dig

我正在尝试从广播启动服务,但由于某些原因,我的服务从未被调用。 这是我的听筒:

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,但是什么也没发生。

我想我发现了问题。。我有服务而不是服务。
奇怪的是,这并没有生成lint错误或其他东西。

您的声明必须在where的声明之后声明,并指定服务包。试试看:

        <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" />

你说什么都没发生是什么意思?你期望发生什么?我期望调用服务中的start方法,但那没有发生。你的logcat是什么样子的?