【问题标题】:how to start service in android without an activity如何在没有活动的情况下在android中启动服务
【发布时间】:2012-12-03 10:32:59
【问题描述】:

我是 android 的初学者。我有两节课,第一节课是

public class SmsReceiver extends BroadcastReceiver{}

第二类是

public class SMS extends Activity{}

我想做的只是:当我收到短信时,开始活动并做某事。但我想使用“服务”而不是“活动”。我的意思是当应用程序启动时,然后在没有活动的情况下启动服务。

这可能吗?

【问题讨论】:

  • 你必须将你的活动类扩展到服务并通过广播接收器来服务

标签: android service android-activity broadcastreceiver


【解决方案1】:

从 SmsReceiver 启动您的服务:

public class SmsReceiver extends BroadcastReceiver{
@Override
   public void onReceive(Context context, Intent intent) {
      String action = intent.getAction();
      if(action.equals("android.provider.Telephony.SMS_RECEIVED")){
        //action for sms received

           // start service here
          Intent intent=new Intent(context,Your_Service.class);
          context.startService(intent);

      }
      else {

      }     
   }
}

并确保您已在AndroidManifest.xml 中将您的服务注册为:

<service android:name="com.xxx.xx.Your_Service" />

【讨论】:

  • 谢谢,关于 AndroidManifest 的注释实际上对我很有帮助。
【解决方案2】:

是的,您只需创建一个在应用程序启动时调用您的服务的 BroadCastReceiver 即可。这是我给出的完整答案。 Android - Start service on boot

如果您不想要任何图标/启动器为您的应用程序,您也可以这样做,只是不要创建任何活动

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

只需按照正常声明的方式声明您的服务即可。

【讨论】:

    【解决方案3】:

    收到短信后,您可以通过广播接收器启动服务

    @Override
    public void onReceive(Context context, Intent intent) {
    
            try {
    
                context.startService(new Intent(context,
                        YourService.class));
            } catch (Exception e) {
                Log.d("Unable to start ", "Service on ");
            }
    

    请确保您已提及您的 AndroidManifest.xml 文件的权限

        <uses-permission android:name="android.permission.RECEIVE_SMS">
    

    对于短信发送和接收,您可以查看本教程Sending sms in android

    【讨论】:

      猜你喜欢
      • 2016-06-27
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 2016-03-10
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      相关资源
      最近更新 更多