Ứng dụng Android giao tiếp bằng cách sử dụng ý định để thực hiện một số hành động. Intent là một đối tượng mang thông tin cần thiết để thực hiện hành động của thành phần đích. Các thành phần hoạt động, dịch vụ và bộ thu quảng bá có thể xử lý các ý định. Ý định có thể bắt đầu hoạt động trong cùng một ứng dụng hoặc các ứng dụng nước ngoài.
Android cung cấp một đối tượng đặc biệt PendingIntent là một đối tượng bao bọc xung quanh đối tượng Intent. PendingIntent không được sử dụng để khởi động một thành phần trong ứng dụng đích. Nó được sử dụng để cho phép ứng dụng nước ngoài bắt đầu vào thời điểm sau đó một thành phần trong ứng dụng của bạn với mục đích được chuyển trong mục đích đang chờ xử lý. Ứng dụng của bạn gửi ý định đang chờ xử lý đến ứng dụng đích. Trong một số sự kiện nhất định trong ứng dụng nước ngoài, hoạt động liên quan đến ý định tồn tại trong ý định đang chờ xử lý, sẽ được bắt đầu.
Làm thế nào để gửi ý định đang chờ xử lý?
Đầu tiên, trong một thành phần của bạn, trong hoạt động, dịch vụ hoặc bộ thu phát sóng, nơi bạn cần ý định đang chờ xử lý, bạn cần tạo đối tượng Intent với thông tin cần thiết để bắt đầu một hoạt động trong ứng dụng của mình. Sau đó, bằng cách sử dụng đối tượng ý định, bạn có thể tạo đối tượng ý định đang chờ xử lý. Sau đó, đối tượng PendingIntent đã tạo có thể được chuyển đến ứng dụng đích bằng dịch vụ ứng dụng đích từ ứng dụng của bạn. Khi xảy ra một sự kiện, trong ứng dụng đích, có ý định đang chờ được gắn với, ứng dụng đích sẽ gửi ý định tồn tại trong ý định đang chờ xử lý, bằng cách gọi gửi trên PendingIntent.
Đoạn mã dưới đây hiển thị giao tiếp giữa hai ứng dụng bằng cách sử dụng ý định đang chờ xử lý. Đầu tiên, ứng dụng nguồn gọi một phương thức trên dịch vụ hệ thống của ứng dụng đích chuyển một đối tượng với mục đích đang chờ xử lý gắn với một sự kiện trong ứng dụng đích.
//create intent and pending intent
Intent eventIntent = new Intent(this, EventHandlerActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, eventIntent, 0);
//create your second app event builder and set pending event which would be tied to some event in the second app
TargetAppEventBuilder tavBuilder = new TargetAppEventBuilder(this);
tavBuilder.setEventIntent(pendingIntent );
//get your second app system service and use it
TargetAppEventManager targetAppEventManager =
(TargetAppEventManager) getSystemService(Context.TARGETAPaP_SERVICE);
targetAppEventManager.createEvent(tavBuilder.build());
Rất hiếm khi nhu cầu tạo một dịch vụ hệ thống được yêu cầu. Có các dịch vụ hệ thống hiện có có thể được sử dụng để gửi ý định đang chờ xử lý nhằm thực hiện một số luồng nhất định cho ứng dụng của bạn, NotificationManager, AppWidgetManager và AlarmManager. Tôi sẽ trình bày cách sử dụng ý định đang chờ xử lý với NotificationManager. Ứng dụng của bạn gửi thông báo, người dùng nhấp vào văn bản thông báo, sự kiện nhấp này sẽ gửi ý định (từ Pendingintent) để bắt đầu hoạt động trong ứng dụng của bạn.
NotificationCompat.Builder noteBuilder =
new NotificationCompat.Builder(this);
noteBuilder.setSmallIcon(R.drawable.notificationicon)
noteBuilder.setContentTitle("Showing Pending Intent")
noteBuilder.setContentText("can you pls click text so my intent get executed");
Intent intent = new Intent(this, MyTargetActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
noteBuilder.setContentIntent(pendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(uniqueid, noteBuilder.build());
No comments:
Post a Comment