2012-12-03 37 views
6

Tôi là người mới bắt đầu ở Android. Tôi có hai lớp, và lớp đầu tiên làcách bắt đầu dịch vụ trong Android mà không có hoạt động

public class SmsReceiver extends BroadcastReceiver{} 

Và lớp thứ hai là

public class SMS extends Activity{} 

Tất cả tôi muốn làm điều đó: khi tôi nhận được một tin nhắn SMS, bắt đầu hoạt động và làm điều gì đó. Nhưng tôi muốn sử dụng "dịch vụ" thay vì "hoạt động". Tôi có nghĩa là khi ứng dụng bắt đầu, sau đó bắt đầu dịch vụ mà không có hoạt động.

là điều này có thể?

+0

bạn phải mở rộng lớp hoạt động của bạn về dịch vụ và satrt các dịch vụ bằng cách phát sóng reciver –

Trả lời

3

Khởi động Dịch vụ của bạn từ SmsReceiver như:

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 { 

     }  
    } 
} 

và chắc chắn rằng bạn đã đăng ký dịch vụ của bạn trong AndroidManifest.xml như:

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

Cảm ơn bạn, lưu ý về AndroidManifest đã thực sự khá hữu ích với tôi. –

1

Có, bạn có thể làm điều đó bằng cách chỉ cần tạo BroadCastReceiver gọi Dịch vụ của bạn khi Khởi động ứng dụng của bạn. Đây là một câu trả lời hoàn chỉnh do tôi đưa ra. Android - Start service on boot

Nếu bạn không muốn bất kỳ biểu tượng/launcher cho bạn ứng dụng bạn có thể làm điều đó cũng có, chỉ không tạo ra bất kỳ Hoạt động với

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

Chỉ cần khai báo các dịch vụ của bạn như tuyên bố bình thường.

0

Khi bạn nhận được một sms bạn có thể bắt đầu dịch vụ của bạn bằng cách thu phát sóng

@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 "); 
     } 

và xin đảm bảo bạn có đề cập đến sự cho phép vào tệp AndroidManifest.xml của bạn

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

và cho sms gửi và tiếp nhận bạn có thể xem hướng dẫn này Sending sms in android

Các vấn đề liên quan