簡體   English   中英

為什么不調用廣播接收器的onreceive()方法?

[英]Why is Broadcast receiver's onreceive() method not invoked?

我是android開發的初學者。 我正在嘗試制作一個SMS調度程序應用程序。我的應用程序的廣播接收器的onReceive()方法沒有被調用嗎? 下面是我的源代碼。我研究了其他一些鏈接,例如Basic Android警報應用程序,Broadcast Receiver的onReceive()方法未稱為 Please,我想知道我出了什么問題。謝謝。

  1. Homepage.java

      public class Homepage extends Activity { public EditText get_number; public EditText text_box; public String search_string,text_box_buffer; public Bundle bundle; public Intent mesg_intent; public PendingIntent pending_intent; public AlarmManager alarmManager; TimePickerFragment newFragment = new TimePickerFragment(); public void showTimePicker(View view) { newFragment.show(getFragmentManager(),"timepicker"); } public void messageSave(View view) { search_string=get_number.getText().toString(); text_box_buffer=text_box.getText().toString(); bundle.putCharSequence("number",search_string); bundle.putCharSequence("message", text_box_buffer); mesg_intent.putExtras(bundle); pending_intent = PendingIntent.getService(this,0,mesg_intent,0); alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP,newFragment.getTime(),pending_intent); Toast.makeText(this,"SMS scheduled to be sent",Toast.LENGTH_SHORT).show(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_homepage); get_number = (EditText) findViewById(R.id.contacts_search); text_box = (EditText) findViewById(R.id.text_box); bundle = new Bundle(); mesg_intent = new Intent(this,Alarmservice.class); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } 

    }

  2. TimepickerFragment.java

     public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener 

    {public Calendar c = Calendar.getInstance(); public int hour = c.get(Calendar.HOUR_OF_DAY); public int minutes = c.get(Calendar.MINUTE);

     @Override public Dialog onCreateDialog(Bundle savedInstanceState) { return new TimePickerDialog(getActivity(),this,hour,minute,DateFormat.is24HourFormat(getActivity())); } public void onTimeSet(TimePicker view, int hourOfDay, int minuteset) { hour=hourOfDay; minute=minuteset; } public long getTime() { long time_ret = new GregorianCalendar().getTimeInMillis()+((hour*60*60*1000)+(minute*60*1000)); return time_ret; } 

    }

  3. Alarmservice.java

     public class Alarmservice extends BroadcastReceiver { @Override public void onReceive(Context context,Intent intent_local) { try { Bundle received_bundle = intent_local.getExtras(); String number = (String) received_bundle.getCharSequence("number"); String message = (String) received_bundle.getCharSequence("message"); SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(number, null, message, null, null); Toast.makeText(context,"SMS successfully sent",Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(context,"SMS failed",Toast.LENGTH_SHORT).show(); } } 

    }

  4. 的Manifest.xml

     <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="24" /> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".Homepage" android:label="@string/app_name" android:screenOrientation="sensor" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:process=":remote" android:name=".Alarmservice"/> </application> 

問題在於創建意圖,方法如下:

mesg_intent = new Intent(this, Alarmservice.class);
mest_intent.putExtras(bundle);
pending_intent = PendingIntent.getBroadcast(this, 0, mesg_intent, PendingIntent.FLAG_UPDATE_CURRENT);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM