1

別のAlarmManagerに関する苦情(迅速な解決策を望んでいます)。開発にはAndroidエミュレータを使用しています。動作しているとされる例を見つけたので、それを使用してみました。私は次のことをしました:

  1. マニフェストファイルにレシーバー文字列を追加しました。

     <receiver android:name=".SchHandler" android:process=":remote" />
    
  2. メインアクティビティを作成し、そのonCreateを使用しました。

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Bundle bundle = new Bundle();
        SchHandler handler = new SchHandler(this, bundle, 1);
    }
    
  3. アラームを作成してリッスンするBroadcastReceiverを作成しました。

    public class SchHandler extends BroadcastReceiver {
        private final String REMINDER_BUNDLE = "ReminderBundle";
    
        public SchHandler (Context context, Bundle extras, int timeoutInSeconds) {    
            Toast.makeText(context, "Scheduling...", Toast.LENGTH_LONG).show();
            Log.d("Debug", "Sch");
    
            AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
            Intent intent = new Intent(context, SchHandler.class);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
    
            Toast.makeText(context, "Time:" + System.currentTimeMillis(), Toast.LENGTH_LONG).show();
            alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,
            System.currentTimeMillis() + 2000, 5000, pendingIntent);    
        }
    
        @Override
        public void onReceive(Context context, Intent arg1) {
           // TODO Auto-generated method stub
           Log.e(REMINDER_BUNDLE, "Receive");
           Toast.makeText(context, "Testing", Toast.LENGTH_LONG).show();
        }
    }
    

setsetRepeatingで試してみましたが、何も機能しませんでした。他に何を試すべきですか?

4

2 に答える 2

0

悪の根源はandroid:process=":remote"あなたの<receiver>タグにあるかもしれません。削除してみてください。

于 2013-01-18T08:35:59.240 に答える
0

レシーバーの名前を完全修飾バージョンに変更したところ、クラス名の代わりにパッケージ名を使用したことがわかりました。適切に設定した後、動作しました。

于 2013-02-25T19:22:49.437 に答える