2016-12-01 5 views
0

Androidバージョン4.4.4のHauweiデバイスを使用しています。アプリを終了した後に放送受信機が呼び出されない

ブロードキャストレシーバーは正常に動作していますが、最近のすべてのアプリケーションを閉じてアプリケーションを終了すると、ブロードキャストレシーバーはトリガーを停止します。私は多くを検索しましたが、私は解決策を見つけることができません。

権限:私は、最近のアプリケーションをクリアした後

public class MySmsReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
    Toast.makeText(context, "sms received", Toast.LENGTH_SHORT).show(); 
} 
    } 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 

    <receiver android:name=".MySmsReceiver" 
     > 
     <intent-filter > 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
    </receiver> 


    <activity android:name=".MainActivity"> 
     <intent-filter> 

      <action android:name="COM.EXAMPLE.SIVA.MAINACTIVITY" /> 


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

    </application> 

そして、これが私の放送受信機である:

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

私はすでにマニフェストファイルに受信機を入れていますチェックしてくださいMy application in Default settingsアプリケーションは強制停止ボタン

のAndroidManifest.xml

public class SomeService extends Service{ 

    public static final String START_SERVICE = "start"; 
    public static final String STOP_SERVICE = "stop"; 

    private SomeReceiver someReceiver; 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     String action = intent.getAction(); 
     switch (action) { 
      case START_SERVICE: 
       if (someReceiver == null) { 
        createReceiver(); 
       } 
       registerReceiver(intent); 
       startForeground((int) Thread.currentThread().getId(), new NotificationCompat.Builder(getBaseContext()).build()); 
       break; 
      case STOP_SERVICE: 
       unregisterReceiver(); 
       stopSelf(); 
     } 

     return START_STICKY; 
    } 

    private void createReceiver() { 
     someReceiver = new SomeReceiver(); 
     filter = new IntentFilter(); 
     filter.addAction(ACTION_TIME_TICK); 
    } 

    private void registerReceiver(Intent intent){ 
     unregisterReceiver(); 

     registerReceiver(someReceiver, filter); 
    } 

    private void registerReceiver(){ 
     unregisterReceiver(); 

     registerReceiver(someReceiver, filter); 
    } 

    private void unregisterReceiver(){ 
     try{ 
      unregisterReceiver(someReceiver); 
     }catch (Exception ex){ 
      ex.printStackTrace(); 
     } 
    } 

    @Nullable 
    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 
} 

この受信機は、時限を聴いている

<service android:name=".SomeService" 
     android:process="com.example.SomeService" 
     android:enabled="true" 
     /> 

SomeService.java ..

答えて

0

を無効にしているあなたは、サービスを作成する必要があります。

public class SomeReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i("SomeReceiver", "Tick"); 
    } 

} 

ActivityMain.java今のAndroidManifest.xmlに受信機を登録する必要はないですためにそう

... 
startService(this, SomeService.class); 
... 

- (ACTION_TIME_TICKは、1分間に1回起きています)。

希望は、それが

+0

同じ問題が、私は追加HAV返事が遅れて申し訳ありません –

+0

男を...持続することができますアンドロイドこと:悪い答えたプロセス=「COM.EXAMPLE.SIVA.MySmsReceiver」 –

+0

。 – Mody

関連する問題