6

私はアンドロイドの初心者です。私には2つのクラスがあり、最初のクラスは

public class SmsReceiver extends BroadcastReceiver{}

そして2クラス目は

public class SMS extends Activity{}

私がやりたいのは、SMSを受け取ったら、アクティビティを開始して何かをすることだけです。しかし、「アクティビティ」ではなく「サービス」を使いたいです。つまり、アプリケーションの起動時に、アクティビティなしでサービスを開始します。

これは可能ですか?

4

3 に答える 3

3

次のように 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" />
于 2012-12-03T10:44:32.400 に答える
1

はい、アプリケーションの起動時にサービスを呼び出すBroadCastReceiverを作成するだけでそれを行うことができます。これが私からの完全な答えです。Android-起動時にサービスを開始

アプリケーションにアイコン/ランチャーが必要ない場合は、それも可能です。アクティビティを作成しないでください。

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

通常どおりにサービスを宣言するだけです。

于 2012-12-03T10:35:32.137 に答える
0

SMS を受信したら、ブロードキャスト レシーバーでサービスを開始できます

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

SMSの送受信については、このチュートリアルSending sms in androidをチェックしてください。

于 2012-12-03T10:44:18.187 に答える