Android - Tiện ích

Widget là một tiện ích nhỏ hoặc điều khiển ứng dụng Android của bạn được đặt trên màn hình chính. Các widget có thể rất tiện dụng vì chúng cho phép bạn đặt các ứng dụng yêu thích của mình trên màn hình chính để truy cập nhanh chóng. Bạn có thể đã thấy một số tiện ích phổ biến, chẳng hạn như tiện ích âm nhạc, tiện ích thời tiết, tiện ích đồng hồ, v.v.

Các widget có thể có nhiều loại như widget thông tin, widget thu thập, widget kiểm soát và widget kết hợp. Android cung cấp cho chúng tôi một khung hoàn chỉnh để phát triển các widget của riêng chúng tôi.

Tiện ích con - tệp XML

Để tạo một widget ứng dụng, điều đầu tiên bạn cần là đối tượng AppWidgetProviderInfo, đối tượng này bạn sẽ xác định trong một tệp XML widget riêng biệt. Để làm điều đó, hãy nhấp chuột phải vào dự án của bạn và tạo một thư mục mới có tênxml. Bây giờ nhấp chuột phải vào thư mục mới được tạo và tạo một tệp XML mới. Loại tài nguyên của tệp XML phải được đặt thànhAppWidgetProvider. Trong tệp xml, xác định một số thuộc tính như sau:

<appwidget-provider 
   xmlns:android="http://schemas.android.com/apk/res/android" 
   android:minWidth="146dp" 
   android:updatePeriodMillis="0" 
   android:minHeight="146dp" 
   android:initialLayout="@layout/activity_main">
</appwidget-provider>

Widget - Tệp bố cục

Bây giờ bạn phải xác định bố cục của tiện ích con trong tệp XML mặc định của bạn. Bạn có thể kéo các thành phần để tạo xml tự động.

Widget - Tệp Java

Sau khi xác định bố cục, bây giờ hãy tạo một tệp JAVA mới hoặc sử dụng tệp hiện có và mở rộng nó bằng AppWidgetProvider và ghi đè phương thức cập nhật của nó như sau.

Trong phương thức cập nhật, bạn phải xác định đối tượng của hai lớp là PendingIntent và RemoteViews. Cú pháp của nó là -

PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.activity_main);

Cuối cùng, bạn phải gọi một phương thức cập nhật updateAppWidget () của lớp AppWidgetManager. Cú pháp của nó là -

appWidgetManager.updateAppWidget(currentWidgetId,views);

Một phần từ phương thức updateAppWidget, có những phương thức khác được định nghĩa trong lớp này để thao tác với các widget. Chúng như sau:

Sr.No Phương pháp & Mô tả
1

onDeleted(Context context, int[] appWidgetIds)

Điều này được gọi khi một phiên bản của AppWidgetProvider bị xóa.

2

onDisabled(Context context)

Điều này được gọi khi phiên bản cuối cùng của AppWidgetProvider bị xóa

3

onEnabled(Context context)

Điều này được gọi khi một phiên bản của AppWidgetProvider được tạo.

4

onReceive(Context context, Intent intent)

Nó được sử dụng để gửi các cuộc gọi đến các phương thức khác nhau của lớp

Tiện ích con - Tệp kê khai

Bạn cũng phải khai báo lớp AppWidgetProvider trong tệp kê khai của mình như sau:

<receiver android:name="ExampleAppWidgetProvider" >
   
   <intent-filter>
      <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
   </intent-filter>
   
   <meta-data android:name="android.appwidget.provider"
      android:resource="@xml/example_appwidget_info" />
</receiver>

Thí dụ

Đây là một ví dụ minh họa việc sử dụng Widget ứng dụng. Nó tạo ra một ứng dụng widget cơ bản sẽ mở trang web hiện tại này trong trình duyệt.

Để thử nghiệm với ví dụ này, bạn cần chạy nó trên một thiết bị thực tế có internet đang chạy.

Các bước Sự miêu tả
1 Bạn sẽ sử dụng Android studio để tạo ứng dụng Android theo gói com.example.sairamkrishna.myapplication.
2 Sửa đổi tệp src / MainActivity.java để thêm mã tiện ích.
3 Sửa đổi res / layout / activity_main để thêm các thành phần XML tương ứng
4 Tạo một thư mục mới và tệp xml trong res / xml / mywidget.xml để thêm các thành phần XML tương ứng
5 Sửa đổi AndroidManifest.xml để thêm các quyền cần thiết
6 Chạy ứng dụng và chọn một thiết bị Android đang chạy và cài đặt ứng dụng trên đó và xác minh kết quả.

Sau đây là nội dung của bản sửa đổi MainActivity.java.

package com.example.sairamkrishna.myapplication;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.widget.RemoteViews;
import android.widget.Toast;

public class MainActivity extends AppWidgetProvider{
   public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
      for(int i=0; i<appWidgetIds.length; i++){
         int currentWidgetId = appWidgetIds[i];
         String url = "http://www.tutorialspoint.com";
         
         Intent intent = new Intent(Intent.ACTION_VIEW);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         intent.setData(Uri.parse(url));
         
         PendingIntent pending = PendingIntent.getActivity(context, 0,intent, 0);
         RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.activity_main);
         
         views.setOnClickPendingIntent(R.id.button, pending);
         appWidgetManager.updateAppWidget(currentWidgetId,views);
         Toast.makeText(context, "widget added", Toast.LENGTH_SHORT).show();
      }
   }
}

Sau đây là nội dung sửa đổi của xml res/layout/activity_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin"
   tools:context=".MainActivity"
   android:transitionGroup="true">
   
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_centerHorizontal="true"
      android:textColor="#ff3412ff"
      android:textSize="35dp" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Widget"
      android:id="@+id/button"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="61dp"
      android:layout_below="@+id/textView" />

</RelativeLayout>

Sau đây là nội dung của res/xml/mywidget.xml.

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider 
   xmlns:android="http://schemas.android.com/apk/res/android" 
   android:minWidth="146dp" 
   android:updatePeriodMillis="0" 
   android:minHeight="146dp" 
   android:initialLayout="@layout/activity_main">
</appwidget-provider>

Sau đây là nội dung của res/values/string.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

Sau đây là nội dung của AndroidManifest.xml tập tin.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      <receiver android:name=".MainActivity">
      
      <intent-filter>
         <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
      </intent-filter>
      
      <meta-data android:name="android.appwidget.provider"
         android:resource="@xml/mywidget"></meta-data>
      
      </receiver>
   
   </application>
</manifest>

Hãy thử chạy ứng dụng của bạn. Tôi giả sử bạn đã kết nối thiết bị di động Android thực tế với máy tính của mình. Để chạy ứng dụng từ Android studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào

biểu tượng Chạy từ thanh công cụ. Trước khi khởi động ứng dụng của bạn, Android studio sẽ hiển thị cửa sổ sau để chọn một tùy chọn mà bạn muốn chạy ứng dụng Android của mình.

Chọn thiết bị di động của bạn làm tùy chọn, sau đó kiểm tra thiết bị di động sẽ hiển thị màn hình mặc định của bạn -

Đi tới phần tiện ích của bạn và thêm tiện ích đã tạo của bạn vào màn hình nền hoặc màn hình chính. Nó sẽ trông giống như thế này -

Bây giờ chỉ cần nhấn vào nút widget xuất hiện, để khởi chạy trình duyệt. Nhưng trước đó hãy đảm bảo rằng bạn đã kết nối với internet. Sau khi nhấn nút, màn hình sau sẽ xuất hiện:

Ghi chú. Chỉ cần thay đổi url trong tệp java, tiện ích của bạn sẽ mở trang web mong muốn của bạn trong trình duyệt.