iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 29
0
public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String title = intent.getStringExtra("title");
    
        if(title==null)return;
        Toast.makeText(context, title, Toast.LENGTH_LONG).show();
        Log.e("ddddd", "onReceive: " + title);
      
//        long id = intent.getLongExtra("id", 0);
//
//        if (id != 0) {
//            sendNotify(context, id);
//        }
    }
    private void sendNotify(Context context, long id) {
        
        ItemDAO itemDAO = new ItemDAO(context.getApplicationContext());
 
        Item item = itemDAO.get(id);

         
        File file = new File(FileUtil.getExternalStorageDir(FileUtil.APP_DIR),
                "P" + item.getFileName() + ".jpg");

       
        boolean isPicture = (item.getFileName() != null &&
                item.getFileName().length() > 0 &&
                file.exists());

      
        NotificationManager nm = (NotificationManager)
                context.getSystemService(Context.NOTIFICATION_SERVICE);

     
        if (isPicture) {
          
            Notification.Builder builder = new Notification.Builder(context);
            builder.setSmallIcon(android.R.drawable.star_on)
                    .setWhen(System.currentTimeMillis())
                    .setContentTitle(context.getString(R.string.app_name));

     
            Notification.BigPictureStyle bigPictureStyle =
                    new Notification.BigPictureStyle();
         
            Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
            bigPictureStyle.bigPicture(bitmap)
                    .setSummaryText(item.getTitle());
          
            builder.setStyle(bigPictureStyle);
            // 發出通知
            nm.notify((int)item.getId(), builder.build());
        }
        // 如果沒有儲存照片檔案
        else {
            // 建立NotificationCompat.Builder物件
            NotificationCompat.Builder builder =
                    new NotificationCompat.Builder(context);
            // 設定圖示、時間、內容標題和內容訊息
            builder.setSmallIcon(android.R.drawable.star_big_on)
                    .setWhen(System.currentTimeMillis())
                    .setContentTitle(context.getString(R.string.app_name))
                    .setContentText(item.getTitle());
            // 發出通知
            nm.notify((int)item.getId(), builder.build());
        }
    }
}
  • 讀取記事標題
  • 顯示訊息框
  • 讀取記事編號
  • 建立資料庫物件
  • 讀取指定編號的記事物件
  • 建立照片檔案物件
  • 取得NotificationManager物件
  • 建立Notification.Builder物件,因為要設定大型圖片樣式所以不能使用NotificationCompat.Builder 建立大型圖片樣式物件
  • 設定圖片與簡介
  • 設定樣式為大型圖片

上一篇
[DAY28]GoogleMap(在連接與結束)
下一篇
[DAY30]BroadcastReceiver讀取時間
系列文
Java 與 Kotlin 入門30

尚未有邦友留言

立即登入留言