Android AlarmManager不会调用BroadcastReceiver

时间:2015-06-13 17:25:09

标签: android

我试图拨打AlarmReceiver来扩展BroadcastReceiver。运行此代码后,我无法看到任何日志。能帮到我解决这个问题。 :d

我尝试拨打AlarmReceiber

的地方
        public void downloadTweets(Context context) {
        ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();


        if (networkInfo != null && networkInfo.isConnected()) {


            Intent alarmIntent = new Intent(context,AppService.AlarmReceiver.class);
            alarmIntent.putExtra(AppService.SCREEN_NAME, ScreenName);

            PendingIntent pi = PendingIntent.getBroadcast(context,0,alarmIntent,PendingIntent.FLAG_UPDATE_CURRENT);//getBroadcast(context, 0, i, 0);

            AlarmManager am=(AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
            Log.v(LOG_TAG, "shot");
            am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1, pi);

            Log.v(LOG_TAG, "shot finish");


        } else {
            Log.v(LOG_TAG, "No network connection available.");
        }
    }

这里是我的AlarmReceiver班级,是AppService

的子班级
  public static class AlarmReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {

     Log.v(LOG_TAG, "AlarmReceiver"); 

     Intent sendIntent = new Intent(context,AppService.class);
      sendIntent.putExtra(AppService.SCREEN_NAME,intent.getStringExtra(AppService.SCREEN_NAME));
      context.startService(sendIntent);
      Log.v(LOG_TAG, "AlarmReceiver done");


  }
 }

我的清单有这个......

<?xml version="1.0" encoding="utf-8"?>

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

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

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<service android:name=".service.AppService"/>
<receiver android:name=".service.AppService$AlarmReceiver" android:enabled="true"/>

运行时,日志仅显示shotshot finish

请你帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

添加:

 sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
在AlarmReceiver类中

将您的清单文件更改为:

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

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

   <service
        android:name=".AppService"
        android:enabled="true" />

    <receiver android:name=".AlarmReceiver" >
        <intent-filter>
            <action android:name="myintent" />
        </intent-filter>
    </receiver>


 </application>

 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />