I use the code below to make the phone vibrate when I receive a SMS with a specific text. But the phone vibrate only if the app is running. How can I make the phone vibrate even when the app is closed ?
Manifest Permission
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.VIBRATE" />
SMSReceiver.java
public class SMSReceiver extends BroadcastReceiver {
private static final String TAG = "SmdReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Bundle myBundle = intent.getExtras();
if (myBundle != null) {
Object[] pdus = (Object[]) myBundle.get("pdus");
for (int i = 0; i < pdus.length; i++) {
SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]);
String body = message.getMessageBody();
if (body == "test") {
Log.d(TAG, "vibrate"); // is print in the console
Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
v.vibrate(VibrationEffect.createOneShot(duration, VibrationEffect.DEFAULT_AMPLITUDE));
} else {
v.vibrate(duration); //deprecated in API 26
}
}
}
}
}
}