2012-11-08 35 views
1

您好,我試圖設置基於輸入到SQL數據庫的通知。當我嘗試保存輸入的數據時,出現錯誤AlarmReciever Activity Not Found;Android活動未找到廣播接收器

當我在下面添加到清單,我收到了類似的錯誤無法找到明確的類我本來這個清單中的

<receiver android:process=":remote" android:name="AlarmReciever"></receiver> 

。任何建議將不勝感激。

<activity 
      android:name=".AlamReciever" 
      android:label="@string/title_activity_user_menu" > 

     </activity> 

Addcourse類片斷

public void onClick (View addModuleButton) 
      { 

       String moduleCode = sqlModuleCode.getText().toString(); 
       String moduleName = sqlModuleName.getText().toString(); 

       String moduleType = spinnerModuleType.getSelectedItem().toString(); 
       String moduleDay = spinnerModuleDay.getSelectedItem().toString(); 

       String moduleStartHour = timePickerStart.getCurrentHour().toString(); 
       String moduleStartMinute = timePickerStart.getCurrentMinute().toString(); 

       String moduleEndHour = timePickerEnd.getCurrentHour().toString(); 
       String moduleEndMinute = timePickerEnd.getCurrentMinute().toString(); 

       String moduleLocation = sqlModuleLocation.getText().toString(); 
       String moduleComments = sqlModuleComments.getText().toString(); 


       MODULEDATABASE = new database(AddCourse.this); 
       MODULEDATABASE.openToWrite(); 
       MODULEDATABASE.createEntry(moduleCode , moduleName, moduleType, moduleDay, moduleStartHour, 
         moduleStartMinute, moduleEndHour, moduleEndMinute, moduleLocation, moduleComments); 

       int Hour = Integer.parseInt(moduleStartHour); 
       int Minute = Integer.parseInt(moduleStartMinute); 

       Calendar cal = Calendar.getInstance(); 

       int currentDay = cal.get(Calendar.DAY_OF_WEEK); 
       int setDay = 0; 
       if(moduleDay=="Sunday") 
       { 
        setDay = 1; 
       } 
       else if(moduleDay=="Monday") 
       { 
        setDay = 2; 
       } 
       else if(moduleDay=="Tuesday") 
       { 
        setDay = 3; 
       } 
       else if(moduleDay=="Wednesday") 
       { 
        setDay = 4; 
       } 
       else if(moduleDay=="Thursday") 
       { 
        setDay = 5; 
       } 
       else if(moduleDay=="Friday") 
       { 
        setDay = 6; 
       } 
       else if(moduleDay=="Saturday") 
       { 
        setDay = 7; 
       } 

        cal.set(Calendar.DAY_OF_WEEK,4); 
        cal.set(Calendar.HOUR_OF_DAY,Hour); 
        cal.set(Calendar.MINUTE, Minute); 
        Intent intent = new Intent(AddCourse.this, AlarmReciever.class); 
        intent.putExtra("alarm_message",moduleName+ "is about to begin"); 
        PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

        // Get the AlarmManager service 
        AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
        am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender); 
        long weekly = AlarmManager.INTERVAL_DAY * 7; 
       am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),weekly,sender); 
       startActivity(intent); 

AlarmReciever類

public class AlarmReciever extends BroadcastReceiver { 

@Override 

    public void onReceive(Context context, Intent intent) {  
     NotificationCompat.Builder nb = new NotificationCompat.Builder(context); 
     nb.setContentTitle("title"); 
     nb.setContentText("message"); 
     nb.setSmallIcon(R.drawable.ic_launcher); 

     NotificationManager nm = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 
     final Intent notificationIntent = new Intent(context, AddCourse.class); 
     notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 

     final PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 
     nb.setContentIntent(contentIntent); 
     Notification notification = nb.getNotification(); 
     nm.notify(0, notification); 
     } 


} 

目錄下載

11-07 12:51:41.195: E/AndroidRuntime(3927): Uncaught handler: thread main exiting due to uncaught exception 
11-07 12:51:41.216: E/AndroidRuntime(3927): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.mycoursetimetable/com.example.mycoursetimetable.AlarmReciever}; have you declared this activity in your AndroidManifest.xml? 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.app.Activity.startActivityForResult(Activity.java:2749) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.app.Activity.startActivity(Activity.java:2855) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at com.example.mycoursetimetable.AddCourse.onClick(AddCourse.java:169) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.view.View.performClick(View.java:2364) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.view.View.onTouchEvent(View.java:4179) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.widget.TextView.onTouchEvent(TextView.java:6541) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.view.View.dispatchTouchEvent(View.java:3709) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.app.Activity.dispatchTouchEvent(Activity.java:2061) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1691) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.os.Looper.loop(Looper.java:123) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at java.lang.reflect.Method.invoke(Method.java:521) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
11-07 12:51:41.216: E/AndroidRuntime(3927):  at dalvik.system.NativeStart.main(Native Method) 
+0

您是否得到了答案?我面臨同樣的問題。 – Vibhav

回答

0

如果您使用的是廣播接收器,它應被宣佈爲一個接收器,不是一個活動和噓通常應該有一個相關的行動。事情是這樣的:

<receiver android:name=".myReceiverName" android:exported="true"> 
<intent-filter> 
    <action android:name="android.intent.action.some_action"/> 
    <data android:scheme="package" android:path="com.blah.mypackage"> 
</intent-filter> 

見詳細說明,官方指導:

https://developer.android.com/guide/topics/manifest/receiver-element.html

+0

這是我最初的樣子,但我仍然收到同樣的錯誤。 – Dinah

0

您在AndroidManifest.xml文件同一封裝內登記ActivityBroadcastReceiver具有相同名稱的所以用活動名稱,而不是用於註冊活動的BroadcastReceiver類

 <activity 
      android:name=".Your_Activity_Name" 
      android:label="@string/title_activity_user_menu" > 
     </activity> 
+0

很抱歉,但這並不奏效。我仍然得到相同的錯誤 – Dinah

0

試試這並保持接收者的名稱與活動不同。

<activity 
     android:name="com.example.mycoursetimetable.AlarmReciever" 
     android:label="@string/title_activity_user_menu" > 

    </activity> 
+0

我試過你的建議,但得到了錯誤:11-08 12:37:23.328:E/AndroidRuntime(227):未捕獲的處理程序:由於未捕獲的異常導致主線程退出 11-08 12:37: 23.348:E/AndroidRuntime(227):java.lang.RuntimeException:無法實例化活動ComponentInfo {com.example.mycoursetimetable/com.example.mycoursetimetable.AlarmReciever}:java.lang.ClassCastException:com.example.mycoursetimetable.AlarmReciev – Dinah

+0

將整個logcat粘貼到pastebin中並在此處給出鏈接 – PravinCG