2016-03-12 4 views
0

Я пытаюсь создать простое приложение, которое запускает службу при получении смс. Я пишу весь код, и я все еще не вижу никакой службы, которая работает на sms-получателе.Почему мой сервис не работает?

Код

  1. служба

    public class MainService extends Service { 
    
    @Override 
    public IBinder onBind(Intent arg0) { 
        return null; 
        } 
    
    
        @Override 
        public void onCreate() { 
    
        Toast.makeText(this, "onCreate", Toast.LENGTH_SHORT).show(); 
    
        super.onCreate(); 
    
        } 
    
    @Override 
    public void onDestroy() { 
        super.onDestroy(); 
        } 
    
    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
    
    Toast.makeText(this, "onStartCommand", Toast.LENGTH_SHORT).show(); 
    
    return START_STICKY; 
        } 
    } 
    
  2. BroadcastReceiver класс

    public class SmsReceiver extends BroadcastReceiver { 
        private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED"; 
    
    
    @Override 
    public void onReceive(Context context, Intent intent) { 
    
    
         context.startService(new Intent(context, MainService.class)); 
    
          // TODO - complete the sms analyze 
        } 
    } 
    
  3. AndroidManifest

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
        <uses-permission android:name="android.permission.RECEIVE_SMS"/> 
    
    
    <application 
        android:allowBackup="true" 
        android:icon="@mipmap/ic_launcher" 
        android:label="@string/app_name" 
        android:supportsRtl="true" 
        android:theme="@style/AppTheme"> 
    
    
    
    <service android:name=".MainService"/> 
    
    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
         <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
        </intent-filter> 
    </receiver> 
    

+0

Вы добавили в свой манифест ? или R u sure for onReceive(), он работает или нет? –

+0

Да, я добавляю RECEIVE_SMS, и onReceive не принимает меры при получении sms – Yanshof

+0

Проблема в BroadcastReceiver. Все в коде ур кажется прекрасным. он должен работать сейчас. если нет, то добавьте разрешения android.permission.RECEIVE_SMS и android.permission.READ_SMS в манифест. затем повторите попытку. Plz сообщите мне, если работаете. –

ответ

0
I also suffered this such issue earlier. I solved the same by using the flag android:enabled="true". 

<receiver android:name=".SmsReceiver" android:enabled="true" 
     android:priority="2000000" > 

    <intent-filter> 

     <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 

    </intent-filter> 

</receiver> 

На самом деле, по умолчанию он будет включен .I не как изменится позже. См. Документацию http://developer.android.com/guide/topics/manifest/receiver-element.html

Иначе вы можете сделать еще одну вещь, которая касается приоритетной части. Не могли бы вы использовать приоритет, который больше 1000. Пример: - android: priority = "2000000".

В вашем устройстве Android у вас есть приложения с sms, которые имеют приемники с более высоким приоритетом. Они могут заблокировать смс, когда они попадут.

+0

попробуйте уже сейчас ... не работает :( – Yanshof

+0

Я отредактировал свой ответ, добавив приоритет, пожалуйста, проверьте. На этот раз ваши проблемы решат, не волнуйтесь :) –

+0

Могу ли я знать, решила ли эта проблема? –

Смежные вопросы