2014-09-18 7 views
-1

Я застрял в этой проблеме в течение 3 дней, и я так расстраиваюсь ..Почему мой BroadcastReceiver не работает должным образом?

Я не знаю, почему на земле мой BroadcastReceiver не работает ...

Я искренне признателен решение моей проблемы ...

Вот мой код ..

MainActivity (я отправил некоторые куски кодов из цельных моих кодов .. что я считаю важным, чтобы понять) это MainActivity, я получаю AlarmManager. . :

public class MainActivity extends FragmentActivity implements TabListener{ 

private GregorianCalendar mCalendar; 
private NotificationManager mNotification; 
private AlarmManager mManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mNotification = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 

    //Get AlarmManager here.. 
    mManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    .... 
     .. 
} 

    public NotificationManager getNotification(){ 
     return mNotification; 
    } 
    public AlarmManager getAlarmManager(){ 
     return mManager; 
    } 

А вот мой MsgBookingFragment (этот класс расширяет фрагмент ..):

//...somewhere else of my codes.. 
    //Access to SQLDataBase and get Date, and set it in bookDate.. 
bookDate.set(Integer.parseInt(year.split("년")[0]), 
     Integer.parseInt(month.split("월")[0]), 
     Integer.parseInt(day.split("일")[0]), 
     Integer.parseInt(hourOfDay.split("시")[0]), 
     Integer.parseInt(minute.split("분")[0])); 


    //get mainActivity, in order to get AlarmManager.. 
final MainActivity mainActivity = (MainActivity)getActivity(); 

AlertDialog.Builder alert_confirm = new AlertDialog.Builder(getActivity()); 

alert_confirm.setMessage("예약 하시겠습니까?").setCancelable(false).setPositiveButton("예", 
new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     doSomething(); 

     msgViewService.write(vo); 
     Log.i("MsgBookingfragment", "msgViewInputVO write done = " + vo.toString()); 

     FragmentManager FM = getFragmentManager(); 
     FM.popBackStack(); 
     FragmentTransaction ft = FM.beginTransaction(); 


     mainActivity.setHashMapInsert(vo.getPersonID()); 
     mainActivity.setBookedHashInsert(vo.getPersonID()); 

     ft.replace(R.id.findperson, new FindPersonFragment()).commit(); 

     //here, I get AlarmSet Instance and setAlarm..!! 
     AlarmSet alarm = new AlarmSet(bookDate, 
       getActivity().getApplicationContext(), 
       ((MainActivity)getActivity()).getAlarmManager(), 
       ((MainActivity)getActivity()).getNotification()); 
     alarm.setAlarm(); 


     Toast.makeText(getActivity().getApplicationContext(), "예약되었습니다.", Toast.LENGTH_LONG).show(); 
    } 

А вот мой AlarmSet Класс:

public class AlarmSet extends Activity implements OnDateChangedListener, OnTimeChangedListener{ 

private String tag = "AlarmSet"; 
    private Calendar bookDate = Calendar.getInstance(); 
    private Context context; 
    private AlarmManager mManager; 
    private NotificationManager mNotification; 


    public AlarmSet(Calendar cal, Context c, AlarmManager am, NotificationManager noti){ 

     bookDate = cal; 
     context = c; 
     mNotification = noti; 
     mManager = am; 
    } 

    public void setAlarm() { 
     mManager.set(AlarmManager.RTC_WAKEUP, bookDate.getTimeInMillis(), pendingIntent()); 
     Log.i("setAlarm : ", bookDate.getTime().toString()); 

    //Log shows this message : Sat Oct 18 14:25:52 GMT+09:00 2014 
    } 

    //set free Alarm 
    public void resetAlarm() { 
     mManager.cancel(pendingIntent()); 
    } 

    public PendingIntent pendingIntent() { 
     Intent i = new Intent(context, AlarmReceiver.class); 
     PendingIntent pi = PendingIntent.getActivity(context, 3 , i, PendingIntent.FLAG_CANCEL_CURRENT); 
     Log.i(tag, "PendingIntent......."); 
     return pi; 
    } 

вот мой AlarmReceiver:

public class AlarmReceiver extends BroadcastReceiver{ 

@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 
    Log.i("TAg", "ggggggggggggggggggggg"); 
    Toast.makeText(context, R.string.app_name, Toast.LENGTH_SHORT).show(); 

} 

И вот мой ManiFast:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="org.dduo.hrelation" 
    android:versionCode="1" 
    android:versionName="1.0" > 

     <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 
     <uses-permission android:name="android.permission.READ_CONTACTS" /> 

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



    <uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="17" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 

     <receiver android:name="org.dduo.hrelation.AlarmReceiver"> 

      <intent-filter> 

       <action android:name="action"/> 

      </intent-filter> 

     </receiver> 

     <activity 
      android:name=".MainActivity" 
      android:windowSoftInputMode="adjustResize" 
      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> 



</manifest> 

Так длинные куски кодов ...

Кстати, я считаю, что это так сомнительно метода pendingIntent ... Я думаю, проблема из-за этого метода .. Я никогда не видел, что «ggggggggg» журнал сообщ .. и тосты тзд на моем тестовом устройстве ..

Пожалуйста ... помогите мне ..

+0

вы можете оставить свой LogCat пожалуйста .... и ошибка вы столкнулись также появятся в вашем логарифме, посмотрите на это ... – Umair

+0

Your AlarmReceiv er - это BroadcastReceiver. Это не активность. Но при создании PendingIntent вы использовали PendingIntent.getActivity(). и то, как вы используете Activity в случае AlarmSet, не очень хорошо –

+0

---- Gopal Rao-- Вы бы разместили для меня некоторые коды? Я не мог понять, что вы имеете в виду .. Извините .. T_T .. – DongWook

ответ

0
in ManiFast : 


<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="org.dduo.hrelation" 
    android:versionCode="1" 
    android:versionName="1.0" > 

     <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 
     <uses-permission android:name="android.permission.READ_CONTACTS" /> 

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



    <uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="17" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
//---> declare broadcast receiver like this 
     <receiver android:name="org.dduo.hrelation.AlarmReceiver"> 
      </receiver> 

     <activity 
      android:name=".MainActivity" 
      android:windowSoftInputMode="adjustResize" 
      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> 



</manifest> 


and pendingIntent(): 


public PendingIntent pendingIntent() { 
     Intent i = new Intent(context, AlarmReceiver.class); 
     PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), 0, i, 0); 
     Log.i(tag, "PendingIntent......."); 
     return pi; 
    } 
+0

Я пробовал это раньше .. Спасибо, в любом случае ... – DongWook

Смежные вопросы