Я хочу передать arraylist в CheckRunningApplicationReceiver.class (широковещательный приемник) из моего MainActivity. CheckRunningApplicationReceiver.class вызывается из другого широковещательного приемника под названием StartupReceiver, который вызывается диспетчером аварийных сигналов каждые 5 секунд. Мне нужно сначала передать arraylist в StartupReceiver, а затем оттуда в CheckRunningApplicationReceiver? или может ли любой способ перейти непосредственно к CheckRunningApplicationReceiver из MainActivity?Как передать Arraylist из активности на широковещательный приемник другому приемнику вещания
StartupReceiver.class
public class StartupReceiver extends BroadcastReceiver {
static final String TAG = "SR";
final int startupID = 1111111;
@Override
public void onReceive(Context context, Intent intent) {
// Create AlarmManager from System Services
final AlarmManager alarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
try{
// Create pending intent for CheckRunningApplicationReceiver.class
// it will call after each 5 seconds
Intent i7 = new Intent(context, CheckRunningApplicationReceiver.class);
PendingIntent ServiceManagementIntent = PendingIntent.getBroadcast(context,
startupID, i7, 0);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime(),
1000, ServiceManagementIntent);
} catch (Exception e) {
Log.i(TAG, "Exception : "+e);
}
}
}
CheckRunningApplicationReceiver.class общественного класса CheckRunningApplicationReceiver расширяет BroadcastReceiver {
public final String TAG = "CRAR"; // CheckRunningApplicationReceiver
Строка имя_пакета; DataManager ConnectivityManager;
@Override
public void onReceive(Context aContext, Intent anIntent) {
dataManager = (ConnectivityManager)aContext.getSystemService(aContext.CONNECTIVITY_SERVICE);
Method dataMtd = null;
try {
dataMtd = ConnectivityManager.class.getDeclaredMethod("setMobileDataEnabled", boolean.class);
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dataMtd.setAccessible(true);
try {
// Using ACTIVITY_SERVICE with getSystemService(String)
// to retrieve a ActivityManager for interacting with the global system state.
ActivityManager am = (ActivityManager) aContext
.getSystemService(Context.ACTIVITY_SERVICE);
// Return a list of the tasks that are currently running,
// with the most recent being first and older ones after in order.
// Taken 1 inside getRunningTasks method means want to take only
// top activity from stack and forgot the olders.
List<ActivityManager.RunningTaskInfo> alltasks = am
.getRunningTasks(1);
//
for (ActivityManager.RunningTaskInfo aTask : alltasks) {
// When user on call screen show a alert message
if (aTask.topActivity.getClassName().equals("com.android.mms.ui.ConversationList")
|| aTask.topActivity.getClassName().equals("com.android.mms.ui.ComposeMessageActivity"))
{
// When user on Send SMS screen show a alert message
try {
dataMtd.invoke(dataManager, false);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} catch (Throwable t) {
Log.i(TAG, "Throwable caught: "
+ t.getMessage(), t);
}
}
MainActivity.class
@Override
protected void onResume()
{
// TODO Auto-generated method stub
getBaseContext().getApplicationContext().sendBroadcast(
new Intent("StartupReceiver_Manual_Start"));//to start StartupReceiver
super.onResume();
}
Manifest
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.javatechig.listapps.AllAppsActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.javatechig.listapps.Adblock"
android:label="@string/app_name" >
</activity>
<receiver android:name=".StartupReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="StartupReceiver_Manual_Start" />
</intent-filter>
</receiver>
<receiver android:name = ".CheckRunningApplicationReceiver"/>
</application>
поблагодарить u за ответ, но я сохранил arraylist из основного действия с использованием общих настроек и сразу получил его от второго широковещательного приемника. –