2016-04-11 7 views
1

Zunächst einmal bin ich ein Anfänger in Android App Development. Ich versuche eine Android-App zu erstellen, die dem Benutzer den Zeitplan für einen bestimmten Tag mitteilt. Ich möchte jedoch ein Feature hinzufügen, in dem die App automatisch eine Benachrichtigung über die nächste Vorlesung sendet. Ich habe versucht, mithilfe der Dokumentation, die auf der Android Development-Website verfügbar ist, eine einfache Benachrichtigung zu erstellen, aber der Code scheint keine Wirkung zu haben. Ich habe verschiedene andere Methoden ausprobiert, die in ähnlichen Fragen erwähnt wurden, aber keine scheint irgendeinen Effekt zu haben. Ich poste meinen Code, damit Sie mir sagen können, was ich falsch mache.So fügen Sie mehrere Benachrichtigungen zu verschiedenen Zeiten an einem einzigen Tag hinzu

Monday.java

package com.arc.sid.timetable; 

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.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListView; 
import android.widget.Toast; 

import java.util.ArrayList; 
import java.util.Calendar; 


public class Monday extends AppCompatActivity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_monday); 

    ArrayList<SearchResults> searchResults = GetSearchResults(); 

    final ListView periods = (ListView) findViewById(R.id.mondayList); 
    periods.setAdapter(new CustomBaseAdapter(this, searchResults)); 

    periods.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
      Object period = periods.getItemAtPosition(position); 
      SearchResults fullObject = (SearchResults) period; 
      Toast.makeText(Monday.this, "Period : " + " " + fullObject.getPeriodName() + "\nLecturer : " 
        + " " + fullObject.getFaculty() + "\nTimings : " + " " + fullObject.getTiming(), Toast.LENGTH_LONG).show(); 
     } 
    }); 
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(this, MondayNotificationService.class); 
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 
// set for 30 seconds later 
alarmMgr.set(AlarmManager.RTC, Calendar.getInstance().getTimeInMillis() + 30000, alarmIntent); 
} 

MondayNotificationService.java

package com.arc.sid.timetable; 

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.support.v7.app.NotificationCompat; 

public class MondayNotificationService extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 

    Notification notification = new NotificationCompat.Builder(context) 
      .setContentTitle("Random title") 
      .setContentText("Random text") 
      .setSmallIcon(R.drawable.icon) 
      .setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, Monday.class), 0)) 
      .build(); 

    notificationManager.notify(0, notification); 
} 

}

activity_monday.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="10dp" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:id="@+id/activity_monday" 
tools:context="com.arc.sid.timetable.Monday"> 

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/mondayList" 
    /> 

</LinearLayout> 

Antwort

1

Ich habe Ihren Code getestet und ich bin in der Lage, die Benachrichtigung nach einer bestimmten Zeit zu sehen. Ich denke, Sie haben möglicherweise den Empfänger in der Manifest-Datei nicht erwähnt. Fügen Sie Folgendes hinzu, wenn es so ist.

<receiver 
android:name=".MondayNotificationService"> 
</receiver> 
+0

Vielen Dank @Rick Sanchez. Ich habe es versäumt, die Empfängeranweisung im Manifest hinzuzufügen –

+0

Willst du meine Antwort dann plz akzeptieren :) –

-2

Verwenden Parse-Bibliothek Überprüfen Sie diese link kann Ihnen helfen

+0

Wie ist das hilfreich? – Joe3112

Verwandte Themen