无法从不同包中的 activity 启动 android 服务

unable to start android service from activity that is in the different package

我是 android 堆栈的新手。我正在尝试从 launcher activity 启动 android 服务。 ServiceActivity 是在不同的包中定义的,但它没有被启动。在 logcat 中没有异常或错误。我已经检查了 Whosebug 上关于此问题的许多问题,但没有奏效。以下是我的应用程序的源代码。我在这个问题上花了将近 8 个小时。任何帮助将不胜感激。

AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="nl.test.app">

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:smallScreens="true"
        android:xlargeScreens="true" />

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">           
        <activity
            android:name=".ui.LoginActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>    
        <service
            android:name=".messaging.AlertService"
            android:enabled="true"
            android:exported="true">
        </service>
    </application>   
</manifest>

AlertService.java:

package nl.test.app.messaging;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;

public class AlertService extends Service {

    public AlertService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }
    @Override
    public void onCreate() {
        super.onCreate();
        Toast.makeText(getApplicationContext(), "on create called\n", Toast.LENGTH_LONG).show();

    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }
}

LoginActivity.java

package nl.test.app.ui;

import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.Toast;

import nl.test.app.R;

public class LoginActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

    }

    // function for service testing
    public void onStartButtonClick(View view) {
        Intent myIntentToStartAlertListActivity = new Intent();
        String pkg = "nl.test.app.messaging";
        String cls = "nl.test.app.messaging.AlertService";
        myIntentToStartAlertListActivity.setComponent(new ComponentName(pkg, cls));

     if (startService(myIntentToStartAlertListActivity) != null) {
            Log.i("Service Started","Service started");
            Toast.makeText(getApplicationContext(), "Service is running\n", Toast.LENGTH_LONG).show();
        }
        else {
            Toast.makeText(getApplicationContext(), "Service is not running\n", Toast.LENGTH_LONG).show();
        }
    }

    @Override
    protected void onStop() {
        super.onStop();

    }
}
// function for service testing
public void onStartButtonClick(View view) {
    Intent myIntentToStartAlertListActivity = new Intent(LoginActivity.this,AlertService.class);
    String pkg = "nl.test.app.messaging";
    String cls = "nl.test.app.messaging.AlertService";
    myIntentToStartAlertListActivity.setComponent(new ComponentName(pkg, cls));
    //startService(myIntentToStartAlertListActivity)

 if (startService(myIntentToStartAlertListActivity) != null) {
        Log.i("Service Started","Service started");
        Toast.makeText(getApplicationContext(), "Service is running\n", Toast.LENGTH_LONG).show();
    }
    else {
        Toast.makeText(getApplicationContext(), "Service is not running\n", Toast.LENGTH_LONG).show();
    }
}

试试这个

public void onStartButtonClick(View view) {
    Intent myIntentToStartAlertListActivity = new Intent(LoginActivity.this, AlertService.class);
 if (startService(myIntentToStartAlertListActivity) != null) {
        Log.i("Service Started","Service started");
        Toast.makeText(getApplicationContext(), "Service is running\n", Toast.LENGTH_LONG).show();
    }
    else {
        Toast.makeText(getApplicationContext(), "Service is not running\n", Toast.LENGTH_LONG).show();
    }
}