Tìm hiểu và sử dụng activity

Thảo luận trong 'Tư vấn - Du học - Tuyển sinh' bắt đầu bởi t11nguyen, 21 Tháng sáu 2017.

  1. t11nguyen

    t11nguyen Member Thành viên

    Bài viết:
    141
    Đã được thích:
    0
    Diendanraovataz.net - Diễn đàn rao vặt - Đăng tin mua bán - Quảng cáo miễn phí - Hiệu quả - Đánh giá Activity căn bản trên lập trình android.

    Như đã biết bình thường 1 áp dụng Android sẽ có nhiều Activity, mỗi Activity chịu bổn phận vẽ màn hình giao diện khách hàng và xử lý các sự kiện diễn ra trên giao diện chậm tiến độ, chả hạn như vẽ bản đồ, chụp ảnh…v.v Để có thể chuyển đổi hỗ tương giữa các Activity thì chúng ta dùng lớp Intent (tiếng Anh có nghĩa là dự định, nghĩa là dự định khiến 1 chiếc gì đó), Intent chẳng những cho phép chúng ta gọi đến các Activity trong cộng 1 áp dụng mà còn cho phép gọi đến các Activity ở các áp dụng khác nữa.


    Mở 1 áp dụng khác
    Chúng ta đã từng dùng lớp Intent để chuyển động hỗ tương giữa các Activity, khiến như thế là chúng ta đã gọi Intent 1 bí quyết tường minh, nghĩa là khai báo rõ ràng tên lớp Activity sẽ được mở bởi Intent. Còn đôi khi chúng ta muốn mở 1 áp dụng khác thì khi chậm tiến độ chúng ta dùng Intent “ngầm”.

    Mở Intent ngầm
    các đối tượng Intent ngầm sẽ không nhận tên của 1 lớp Activity nào cả, mà thay vào chậm tiến độ là 1 hành động nào nó, chả hạn như mở áp dụng bản đồ, mở trình duyệt, mở áp dụng gửi mail… và các đối tượng Intent này cũng có thể gửi dữ liệu đến các hành động chậm tiến độ nữa, thí dụ như mở bản đồ tại thành phố Nội, mở trình duyệt tại địa chỉ …v.v Thường thì dữ liệu gửi đi sẽ được lưu trong lớp android.net.Uri.

    thí dụ 1:



    import android.content.Intent;
    import android.net.Uri;
    import android.app.Activity;
    import android.os.Bundle;

    public class MainActivity extends Activity

    @Override
    protected void onCreate(Bundle savedInstanceState)
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Uri number = Uri.parse("tel:00841218749385");
    Intent callIntent = new Intent(Intent.ACTION_DIAL, number);
    startActivity(callIntent);


    Đoạn code trên sẽ khai mạc hình gọi điện có số điện thoại được chỉ định trong đối tượng Uri.



    thí dụ 2:



    import android.content.Intent;
    import android.net.Uri;
    import android.app.Activity;
    import android.os.Bundle;

    public class MainActivity extends Activity

    @Override
    protected void onCreate(Bundle savedInstanceState)
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Uri webpage = Uri.parse("");
    Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);
    startActivity(webIntent);


    Đoạn code trên sẽ mở trình duyệt web mặc định đến website có địa chỉ được chỉ định trong đối tượng Uri.

    Nên học html cơ bản như thế nào cho hiệu quả

    tham số khởi tạo đối tượng Intent ở đây chẳng phải là tên 1 lớp Activity nào, mà là 1 hằng số chỉ định 1 hành động nào chậm tiến độ, thí dụ như Intent.ACTION_VIEW là mở trình duyệt web, Intent.ACTION_DIAL là mở trình gọi điện… tham số thứ 2 là 1 đối tượng Uri có theo dữ liệu cho hành động chậm tiến độ. Danh sách các đối tượng hành động cộng có kiểu dữ liệu Uri có thể xem ở đây.

    1 số đối tượng hành động có thể nhận thêm nhiều dữ liệu chứ không chỉ có 1, dữ liệu chậm tiến độ không buộc phải nhưng có thể truyền đi, khi chậm tiến độ chúng ta truyền vào bằng phương thức putExtra() như chơi, ví dụ:


    Đoạn code trên sẽ mở áp dụng gửi tin nhắn.

    giả dụ hệ điều hành thấy có nhiều hơn 1 áp dụng có thể mở được đối tượng Intent này thì hệ điều hành sẽ mở 1 hộp thoại cất danh sách các áp dụng chậm tiến độ cho khách hàng chọn, còn giả dụ chỉ có 1 áp dụng có thể mở được thì hệ điều hành sẽ chạy áp dụng chậm tiến độ luôn.



    Kiểm tra Intent có thể mở được hay không
    Hệ điều hành Android đảm bảo rằng luôn luôn sẽ có áp dụng được cài sẵn có thể mở được dữ liệu được gửi đi bởi đối tượng Intent ngầm. bên cạnh đó chúng ta nên kiểm tra trước thì sẽ phải chăng hơn bởi vì giả dụ không có áp dụng nào có thể mở được đối tượng Intent của chúng ta thì chương trình của bạn sẽ bị crash (tức là bị tắt mà không rõ lý do).

    Để biết được đối tượng Intent mà chúng ta định gọi có thể mở được bởi áp dụng nào chậm tiến độ hay không thì chúng ta dùng phương thức queryIntentActivities() của lớp android.content.pm.PackageManager và truyền vào đối tượng Intent và chế độ kiểm tra. Ví dụ:





    import android.content.Intent;
    import android.content.pm.PackageManager;
    import android.net.Uri;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.Toast;

    import java.util.List;

    public class MainActivity extends Activity

    @Override
    protected void onCreate(Bundle savedInstanceState)
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);

    PackageManager packageManager = getPackageManager();
    List activities = packageManager.queryIntentActivities(webIntent, PackageManager.MATCH_DEFAULT_ONLY);
    boolean isIntentSafe = activities.size() > 0;

    Toast.makeText(getApplicationContext(), (isIntentSafe ? "Intent is safe" : "Intent is not safe"), Toast.LENGTH_LONG).show();


    Chúng ta có thể lấy đối tượng PackageManager trong khoảng phương thức getPackageManager() của lớp Activity.

    1
    2
    List activities = packageManager.queryIntentActivities(webIntent, PackageManager.MATCH_DEFAULT_ONLY);
    boolean isIntentSafe = activities.size() > 0;
    Phương thức queryIntentActivities() sẽ trả về 1 đối tượng List cất danh sách các lớp Activity có thể mở được đối tượng Intent của chúng ta. Ở đây chúng ta chỉ cần xem giả dụ danh sách này khác rỗng thì nghĩa là đối tượng Intent của chúng ta có thể mở được

    Mở hộp thoại chọn ứng dụng
    Ở thí dụ gửi tin nhắn ở trên chúng ta thấy có 2 áp dụng có thể mở đối tượng Intent của chúng ta nên hệ điều hành sẽ hiển thị 1 hộp thoại cho phép khách hàng chọn lọc áp dụng để mở, bên cạnh đó ở dưới hộp thoại còn có 2 nút là Just OnceAlways, nút Just Once có nghĩa là ngay tại thời điểm chậm tiến độ chỉ chọn áp dụng chậm tiến độ để dùng, còn các lần sau thì hệ điều hành sẽ mở lại hộp thoại để khách hàng chọn áp dụng khác, còn nút Always nghĩa là trong khoảng nay về sau hệ điều hành sẽ dùng áp dụng chậm tiến độ luôn chứ không bắt khách hàng phải chọn lại nữa.

    bên cạnh đó giả dụ muốn chúng ta có thể buộc phải hệ điều hành mỗi lần chạy sẽ phải mở hộp thoại chọn áp dụng chứ không dùng áp dụng được gắn mác Always.

    Để khiến việc này chúng ta tạo 1 đối tượng Intent và gọi phương thức createChooser() rồi truyền vào phương thức này đối tượng Intent mà chúng ta muốn dùng. Ví dụ:

    1


    import android.content.Intent;
    import android.content.pm.PackageManager;
    import android.net.Uri;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.Toast;

    import java.util.List;

    public class MainActivity extends Activity

    @Override
    protected void onCreate(Bundle savedInstanceState)
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Intent emailIntent = new Intent(Intent.ACTION_SEND);
    emailIntent.setType("text/plain");
    emailIntent.putExtra(Intent.EXTRA_EMAIL, "[email protected]");
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Hello");
    emailIntent.putExtra(Intent.EXTRA_TEXT, "Nice lớn meet you");
    startActivity(emailIntent);

    String title = "Choose app lớn open";
    Intent chooser = Intent.createChooser(emailIntent, title);

    if(emailIntent.resolveActivity(getPackageManager()) != null)
    startActivity(chooser);


    Phương thức createChooser() sẽ nhận đối tượng Intent mà chúng ta muốn mở và 1 chuỗi hiển thị tiêu đề cho hộp thoại.

    1
    2
    if(emailIntent.resolveActivity(getPackageManager()) != null)
    startActivity(chooser);
    Đoạn code trên chỉ là kiểm tra xem đối tương Intent của chúng ta có áp dụng nào có thể mở được hay không thôi, giả dụ có thì mới cho hiển thị hộp thoại chọn áp dụng.





    Bài học chấm dứt tại đây, chúc Anh chị thành công trong học tập.
     
    Cùng đọc NỘI QUY DIỄN ĐÀN và ý thức thực hiện cùng BQT xây dựng cộng đồng thêm vững mạnh bạn nhé
    ***** Xin đừng Spam vì một diễn đàn trong sạch *****
Địa chỉ thu mua do cu ho chi minh uy tín, Official Premium Account Reseller Premiumkeystore.com Easily, Instant delivery & Trusted.

Chia sẻ trang này