2017-01-07 7 views
1

アラームマネージャーの解決策を探して一日を無駄にしました。私は今、さらに捜索するのに疲れている。私はまた、すべての質問とその答えをstackoverflowで読んだ。下のコードで私の間違いを解消できますか?私はあなたにとても感謝しています。アラームマネージャーが私のコードで動作していません

主な活動

public class DisplayWebView extends AppCompatActivity { 

    WebView webview; 
    EditText link, date; 
    Button insert; 
    String[] receivedLink; 
    ListView list; 
    List<Model> ls_data; 
    CustomAdapter adapter; 

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

     Intent intent = new Intent(DisplayWebView.this, MyBroadcastReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(DisplayWebView.this, 234324243, intent, 0); 
     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() 
       + (5 * 10), pendingIntent); 
    } 
} 

アラームレシーバ

public class MyBroadcastReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     Toast.makeText(context, "Alarm....", Toast.LENGTH_LONG).show(); 

     Log.e("Testing","ok"); 

    } 


} 

マニフェスト

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.umama.webview"> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> 
<!-- <receiver android:process=":remote" android:name="AlarmReceiver"></receiver>--> 
    <receiver android:name="com.umama.WebView.AndroidAlarmService" android:enabled="true" /> 
    <!--<receiver android:name="net.fusonic.testapp.receivers.TestAlarmReceiver"></receiver>--> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".SplashScreen" /> 
     <!-- 
ATTENTION: This was auto-generated to add Google Play services to your project for 
    App Indexing. See https://g.co/AppIndexing/AndroidStudio for more information. 
     --> 
     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 

     <activity android:name=".DisplayWebView"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

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

</manifest> 
+1

「マニフェスト」に「MyBroadcastReceiver」を追加してください。 –

+0

前のコメントはほとんど問題はありませんが、今後は「うまく機能しません」と説明しています。動作しないということは、まったく発射しないこと、適切なタイミングで発砲すること、繰り返し発射しないことなどを意味する可能性があります。 –

+0

MyBroadcastReceiverはアクティビティではないJavaクラスです。 –

答えて

0

これで文字列を置換してみてください。

alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (5 * 1000), pendingIntent); 

10を1000に置き換える必要があります。これは、5 * 10 = 0.05秒です。これは短い間隔になります。

Android 5+は1分以上の間隔しか使用できないことに注意してください。

+0

それを試しました。まだ動かない。 –

2

すべてのバージョンで動作することを保証するため、次のコードを実行することをお勧めします。また、dozeのため。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     alarms.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, date.getTime(), recurringAlarm); 
    } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     alarms.setExact(AlarmManager.RTC_WAKEUP, date.getTime(), recurringAlarm); 
    } else { 
     alarms.set(AlarmManager.RTC_WAKEUP, date.getTime(), recurringAlarm); 
    } 
関連する問題