安卓:无法启动服务意图:未找到?

2022-09-03 05:24:24

我知道,我不是第一个遇到这个问题的人,但我尝试了很多解决方案,我发现了,没有人工作......也许你可以找到错误

错误(也是在没有.class和/的情况下出现的。客户端取决于其他设置)

12-02 16:40:15.359: W/ActivityManager(74): 无法启动服务意图 { act=com.android.fh.EnOceanApp.Client.class }: 未找到

在清单中,这包含在应用程序中,在活动中(也在活动和“中尝试过)。客户”

onCreate() 中的代码

    startService(new Intent(this, Client.class)); 

 startService(new Intent(this.getApplicationContext(), Client.class));

Intent intent=new Intent("com.android.fh.EnOceanApp.Client.class");
    this.startService(intent);

  Intent intent=new Intent("com.android.fh.EnOceanApp.Client");
    this.startService(intent);

而现在,我不再有一个想法了。com.android.fh.EnOceanApp 是这个包,Client.java这个包中的服务类。

和我忘记的清单:

  <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".EnOceanAppActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>      
        </activity>

      <activity android:name=".ListView" 
          android:label="List View">
      </activity> 
      <activity android:name=".GraphView" 
          android:label="Graph View">
      </activity>
      <service 
            android:name=".Client"></service> //with and without ., of course without this comment
    </application>

答案 1

感谢用户njzk2让我注意到发生了什么。

我也有同样的问题。如果您之前未在 proyect 的清单文件中注册,则 Android 操作系统似乎找不到您请求的服务类。

请记住,服务类似于活动,但没有图形界面。这意味着您需要先注册服务,然后才能使用它们

以下是您在 Android 项目中注册服务的方式:

<application>
    <!-- your code -->
    <activity>
        <!-- your code  -->
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <service android:name="com.your.own.service.class"></service>
</application>

请记住,YourService 类需要从 Service 扩展,如果不是,您的类将不是服务。

public class YourService extends Service{}

答案 2

有时,您需要在清单中完全限定类名,而不是使用缩写形式 (.classname)。当我使用来自不同包的类时,我已经看到了这一点,但也许它在这里会有所帮助,因为服务意图可能会超出应用程序。


推荐