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 ..
同じ問題が、私は追加HAV返事が遅れて申し訳ありません –
男を...持続することができますアンドロイドこと:悪い答えたプロセス=「COM.EXAMPLE.SIVA.MySmsReceiver」 –
。 – Mody