Summary of PRACTICAL Android programming techniques

  • 2021-01-02 21:59:54
  • OfStack

In this paper, practical Android programming techniques are summarized. To share for your reference, the details are as follows:

1. Capture the boot event and start receiver


<receiver android:name=".BootReceiver">
 <intent-filter>
 <action android:name="android.intent.action.BOOT_COMPLETED" />
 <category android:name="android.intent.category.HOME" />
 </intent-filter>
</receiver>


public class BootReceiver extends BroadcastReceiver {
 @Override
 public void onReceive(Context context, Intent intent) {
 context.startService(new Intent(context,MyService.class));// Start the service
 }
}

2. Start service, set the alarm frequency, initiate network request periodically and obtain data


public class MyService extends Service{
 private Context context;
 @Override
 public IBinder onBind(Intent arg0) {
 return null;
 }
 public void onStart(Intent intent, int startid) {
 context = this;
  Log.d("", "-------onStart------");
  Calendar calendar=Calendar.getInstance();
  long startTime = calendar.getTimeInMillis();
  long repeatTime= 5*1000;// every 5 Seconds, schedule 1 time 
  Intent in = new Intent(MyService.this,taskReceiver.class);
  PendingIntent sender = PendingIntent.getBroadcast(MyService.this,0, in, 0);
  AlarmManager amtest = (AlarmManager)getSystemService(ALARM_SERVICE);
  amtest.setRepeating(AlarmManager.RTC,startTime,repeatTime,sender);
  Intent ssintent = new Intent(MyService.this,sstaskReceiver.class);
  PendingIntent sssender = PendingIntent.getBroadcast(MyService.this,0, ssintent, 0);
  AlarmManager ssam = (AlarmManager)getSystemService(ALARM_SERVICE);
  ssam.setRepeating(AlarmManager.RTC,startTime,repeatTime,sssender);
 }
}

Supplement: In the program, you can turn on several AlarmManager, they are unrelated and can be used safely.

3. Obtain the broadcast sent by each AlarmManager and dynamically generate SMS messages


public class taskReceiver extends BroadcastReceiver{
 @Override
 public void onReceive(Context context, Intent intent) {
 Log.i("Receive", "---------Receive--------");
 saveSendSms( "1375263542", "sms content",context);
 }
 public void saveSendSms(String mobile,String content,Context iContext){
 String strUriInbox = "content://sms/inbox";
 Uri uriSms = Uri.parse(strUriInbox);
 ContentValues cvs = new ContentValues();
 cvs.put("address", mobile);
 cvs.put("body", content);
 cvs.put("type", 2);
 cvs.put("read", 3);
 iContext.getContentResolver().insert(uriSms, cvs);
 }
}

There is one BroadcastReceiver for each AlarmManager.

<receiver android:name=".taskReceiver" android:process=":remote"></receiver>

4. Stop AlarmManager


public void onClick(View v) {
 Intent intent = new Intent(TestAlarm.this,taskReceiver.class);
   PendingIntent sender = PendingIntent.getBroadcast(TestAlarm.this,
    0, intent, 0);
   AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);// Follow up production AlarmManager To the corresponding 
   am.cancel(sender);
   Log.i("", "------end-----");
}

I hope this article has been helpful for Android programming.


Related articles: