androidalarmmanagerxposed

Create an alarm between to different apps


I want to create an alarm to create a notification. The app that will create to Intent is not the same that will receive it.

I have that code, but it doesn't work, and I can't figure why :

First app:

package io.github.alucas.alarmsend;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toast.makeText(this, "Create alarm", Toast.LENGTH_SHORT).show();

        final Intent intent = new Intent("io.github.alucas.alarmreceive.ALARM");
        PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000 * 5, alarmIntent);

        Toast.makeText(this, "Send alarm", Toast.LENGTH_SHORT).show();
    }
}

Second app :

package io.github.alucas.alarmreceive;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Receive alarm", Toast.LENGTH_SHORT).show();
    }
}

Manifest :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="io.github.alucas.alarmreceive">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

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

        <receiver
            android:name="io.github.alucas.alarmreceive.AlarmReceiver"
            android:enabled="true">
            <intent-filter>
                <action android:name="io.github.alucas.alarmreceive.ALARM"/>
            </intent-filter>
        </receiver>
    </application>
</manifest>

[edit1]

Adding the flowing line fixed my problem :

intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);

Solution

  • Your second application has no activity. If you add an activity to your second app, install and run on the device, your code will work and the alarm will be delivered to the second application.