Mục lục:
Video: Hướng dẫn tự tạo 1 Ứng dụng hoặc Games Android trên ĐT mà không cần biết lập trình & Code v.v 2025
" Ứng dụng của tôi cần một người nhận phát sóng. Ai đó có thể nhắc nhở tôi làm thế nào tôi có thể mã một người nhận phát sóng? Và trong khi bạn đang ở đó, làm thế nào một hoạt động trở lại một kết quả? Oh, heck. Tôi có thể tìm thấy mọi thứ nhanh chóng ở đâu? "
Có các ví dụ về các loại mã được sử dụng trong phát triển ứng dụng Android sẵn sàng để bàn tay có thể là một sự trợ giúp lớn. Bạn tìm thấy rất nhiều ví dụ ngay tại đây.
Các hoạt động
Dưới đây là hoạt động bắt đầu một hoạt động khác:
public class CheatSheetActivity mở rộng Hoạt động thực hiện OnClickListener {Button button1; tĩnh cuối cùng Chuỗi MY_ACTION = "com allmycode hành động"; static final String MY_URI = "my_scheme: my_scheme_specific_part"; @ Xoá bỏ công khai void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (bố cục R. main); button1 = (nút) findViewById (R id id1); button1. setOnClickListener (this);} public void onClick (Xem arg0) {Ý định Intent = Ý tưởng mới (); ý định. setAction (MY_ACTION); ý định. setData (Phân tích Uri (MY_URI)); startActivity (intention);}}
Và đừng quên - khi bạn tạo một lớp học mới, bạn phải thêm một phần tử tương ứng vào AndroidManifest của bạn. tệp xml. Bộ lọc ý định của phần tử Cải thiện giống như sau:
Để có kết quả từ một hoạt động, hãy thêm đoạn mã sau (hoặc cái gì đó tương tự) vào ứng dụng của bạn:
cuối cùng int CODE_NUMBER = 42; cuối cùng String CLASSNAME = "CheatSheetActivity"; public void onClick (Xem arg0) {Ý định Intent = Ý tưởng mới (); ý định. setAction (MY_ACTION); ý định. setData (Phân tích Uri (MY_URI)); startActivityForResult (intention, CODE_NUMBER);} protected void onActivityResult (int codeNumber, int resultCode, Intent intent) {if (resultCode == RESULT_OK) {if (codeNumber == CODE_NUMBER) {Đăng nhập. i (CLASSNAME, intention. getData () getSchemeSpecificPart ());}}}
Và trong hoạt động tạo ra kết quả, thêm mã của loại sau:
Mục đích ý định = Ý đồ mới (); ý định. setData (Uri. parse ("result: hello")); setResult (RESULT_OK, ý định); hoàn thành();
Dịch vụ
Một dịch vụ thường làm công việc của nó mà không làm phiền (hoặc thậm chí thông báo) người sử dụng. Ví dụ: dịch vụ giá chứng khoán có thể truy cập vào web và nhận giá mua mới nhất của người dùng yêu thích. Một hoạt động khác của ứng dụng có thể lấy dữ liệu từ dịch vụ và hiển thị dữ liệu trên màn hình của thiết bị.
Đoạn mã dưới đây là dịch vụ thời tiết hoàn chỉnh (nhưng không chính xác):
lớp công khai MyWeatherService mở rộng dịch vụ {Messenger messengerToClient = null; MyIncomingHandler myIncomingHandler = new MyIncomingHandler (); Messenger messengerToService = Messenger mới (myIncomingHandler); @Chuyển công cộng đồng IBinder onBind (Intent intent) {return messengerToService.getBinder ();} class MyIncomingHandler mở rộng Handler {@Chuyển công void handleMessage (Message incomingMessage) {messengerToClient = incomingMessage. trả lời; Gói trả lời = Gói mới (); Đáp lại. putString ("thời tiết", "trời tối vào ban đêm"); Thư trả lờiMessage = Thư. đạt được(); Trả lời tin nhắn. setData (trả lời); thử {messengerToClient. gửi (replyMessage);} catch (RemoteException e) {e. printStackTrace ();}}}}
Trong một gói khác, bạn đặt mã để gọi dịch vụ thời tiết. Dưới đây là một số mã mẫu:
public class ServiceConsumerActivity mở rộng Hoạt động thực hiện OnClickListener {Messenger messengerToService = null; MyIncomingHandler myIncomingHandler = new MyIncomingHandler (); Messenger messengerFromService = Messenger mới (myIncomingHandler); Kết nối dịch vụ kết nối = new MyServiceConnection (); SharedPreferences prefs; boolean isBound = sai; void bind () {Intent intent = intent mới (); ý định. setAction ("allmycode.GETATHER"); isBound = bindService (ý định, kết nối, Bối cảnh BIND_AUTO_CREATE);} public void queryService () {if (isBound) {Gói bó = Gói mới (); bó. putString ("vị trí", "Philadelphia"); Message message = Thông báo. đạt được(); thông điệp. replyTo = messengerFromService; thông điệp. setData (bó); thử {messengerToService. gửi (tin nhắn);} catch (RemoteException e) {e. printStackTrace ();}} khác {textView1. setText (R string. service_not_bound);}} class MyIncomingHandler mở rộng Handler {@Chuyển công void handleMessage (Message msg) {Gói bó = msg. lấy dữ liệu(); textView1. setText (nhóm getString ("weather"));}} void unbind () {if (isBound) {unbindService (kết nối); isBound = false;}} lớp MyServiceConnection thực hiện dịch vụ ServiceConnection {public void onServiceConnected (ComponentName className, IBinder binder) {messengerToService = new Messenger (binder);} public void onServiceDisconnected (ComponentName n) {messengerToService = null;}} // Tôi không ' t bao gồm phương thức onCreate hoặc // onClick trong ví dụ này.}
Tất nhiên, không có ứng dụng nào tồn tại mà không có một số phần tử trong tệp kê khai. Để đăng ký dịch vụ của phần này, bạn cần một phần tử của loại sau:
Người nhận phát sóng
Khi bạn phát sóng, bạn bỏ ý định ra ngoài tự nhiên. Người nhận phát sóng với bộ lọc có mục đích tương thích sẽ thức tỉnh và làm điều gì đó hữu ích với thông tin phát sóng.
Để tạo máy thu phát của riêng bạn, bạn mở rộng lớp BroadcastReceiver của Android và bạn khai báo một OnReceive (máy chủ nhận được thông báo phát sóng) phương pháp. Ví dụ: mã sau đáp ứng các chương trình phát sóng phù hợp:
lớp công khai MyReceiver mở rộng BroadcastReceiver {@Chuyển công khai void onReceive (Context context, Intent intent) {// Thực hiện các công việc quan trọng}}
Một ứng dụng khác tạo ra chương trình phát sóng với mã của các loại sau:
Intent intent = new Intent (); ý định. setAction ("all mycode.ACTION"); sendBroadcast (ý định);
Bạn có thể đăng ký người nhận phát sóng trong AndroidManifest của mình.file xml:
Để linh hoạt hơn, bạn có thể đăng ký một máy thu trong mã Java của bạn. Các mã Java sau đây về cơ bản là yếu tố trong một AndroidManifest. file xml nào:
Bộ lọc IntentFilter = new IntentFilter (); lọc. addAction ("all all mycode. HÀNH ĐỘNG"); registerReceiver (mới MyReceiver (), bộ lọc);
Nhà cung cấp nội dung
Nhà cung cấp nội dung của ứng dụng cung cấp dữ liệu cho các ứng dụng khác chạy trên cùng một thiết bị. Giao diện của nhà cung cấp giống với giao diện của cơ sở dữ liệu, với các bảng, các hàng, các con trỏ, và tất cả những thứ tốt. Ví dụ, mã để truy vấn một nhà cung cấp nội dung như sau:
truy vấn Cursor công cộng (Uri uri, String [] các cột, String whereClause, String [] whereArgs, String sortOrder) {Con trỏ Cursor = null; int code = uriMatcher. khớp (uri); if (code == 1) {cursor = db. truy vấn (SIMPLETABLE, các cột, whereClause, whereArgs, null, null, sortOrder);} else if (code == 2) {String [] columnNames = {"_id", "name", "amount"}; Chuỗi [] rowValues = {"Bảng", "4", "2"}; MatrixCursor matrixCursor = new MatrixCursor (columnNames); matrixCursor. addRow (rowValues); Con trỏ = matrixCursor;} return cursor;}
Fragments
Một đoạn giống như một khung nhìn - một điều hiển nhiên bạn có thể hiển thị bên trong một hoạt động. Nhưng không giống như một khung nhìn, một đoạn có các phương pháp vòng đời của riêng nó. Vì vậy, Android có thể tạo ra một ít ngăn xếp các mảnh vỡ bên trong một hoạt động. Khi người dùng nhấn nút Quay lại, Android sẽ mở ra một phần của ngăn xếp.
Bạn có thể đặt một mảnh vào bố cục khung sau:
Để đặt một mảnh vào bố cục, bạn thực hiện một giao dịch phân đoạn (fragment transaction). Dưới đây là những gì giao dịch mảnh như sau:
DocsFragment docsFragment = DocsFragment. newInstance (chỉ mục); FragmentManager fragmentManager = getFragmentManager (); FragmentTransaction fragmentTransaction = fragmentManager. beginTransaction (); fragmentTransaction. thay thế (R id ids, docsFragment); fragmentTransaction. addToBackStack (null); fragmentTransaction. commit ();
Intents và Intent Filters
Khi một mục đích đáp ứng được bộ lọc đích đúng, kết quả là một kết hợp được thực hiện trên trời. Nhưng các quy tắc để kết hợp ý định với các bộ lọc là phức tạp. Các quy tắc đọc giống như các điều khoản hợp pháp trong một thỏa thuận trước khi kết hôn.
Bạn có thể sử dụng các phương pháp Java để mô tả một ý định. Dưới đây là một số phương pháp thường được sử dụng:
-
setAction: Thiết lập hành động của ý định. (Một mục đích có thể chỉ có một hành động.)
-
addCategory: Thêm một thể loại vào mục đích. (Một mục đích có thể có nhiều loại)
-
setData: Đặt URI của ý định, và loại bỏ loại MIME của mục đích (nếu ý định có một loại MIME).
-
setType: Thiết lập loại MIME của mục đích và loại bỏ URI của mục đích (nếu mục đích có URI).
-
setDataAndType: Thiết lập cả URI của ý định và loại MIME của mục đích. Theo các tài liệu, "Phương pháp này rất hiếm khi được sử dụng. "
Bạn cũng có thể sử dụng mã XML để mô tả ý định.
Trong URI // www.allmycode. com: 80 / android, đề án là http, máy chủ là www. allmycode. com, cổng là 80, và con đường là android. Thẩm quyền (không phải là một trong các thuộc tính trong phần tử, nhưng rất hữu ích để biết) là www. allmycode. com: 80.
Bạn thường đặt giá trị của một bộ lọc đích trong AndroidManifest. tệp xml. Nhưng trong mã Java, Android. Nội dung. Lớp IntentFilter có rất nhiều phương pháp hữu ích. Dưới đây là một vài trong số đó:
-
addAction: Thêm một hành động vào bộ lọc.
-
addCategory: Thêm một thể loại vào bộ lọc.
-
addDataScheme: Thêm lược đồ vào bộ lọc.
-
addDataAuthority: Thêm quyền hạn vào bộ lọc.
-
addDataPath: Thêm đường dẫn vào bộ lọc.
-
addDataType: Thêm một kiểu MIME vào bộ lọc.
Bộ lọc đích có thể có nhiều hành động, nhiều loại, v.v.
Dưới đây là danh sách ngắn về các yêu cầu đối với sự phù hợp giữa mục đích và bộ lọc đích. Danh sách này không hoàn chỉnh vì vậy, nếu bạn muốn có một danh sách đầy đủ, bạn nên mua Barry Burd Phát triển ứng dụng Android cho tất cả mọi người>. Nếu mục đích có hành động, để phù hợp với mục đích, bộ lọc đích phải có hành động giống hệt nhau. Bộ lọc đích có thể có hành động bổ sung. Bất kỳ hành động bổ sung nào trong số này không ảnh hưởng đến trận đấu.
-
Nếu mục đích có các danh mục, để phù hợp với mục đích, bộ lọc đích sẽ phải có các loại này (và có thể nhiều hơn).
-
Nếu mục đích có loại MIME, để phù hợp với mục đích, bộ lọc đích phải có loại MIME phù hợp. Bộ lọc đích có thể có các loại MIME bổ sung. Bất kỳ loại MIME bổ sung nào cũng không ảnh hưởng đến trận đấu.
-
Nếu bộ lọc đích có các loại MIME, để phù hợp với bộ lọc đích, mục đích phải có loại MIME và loại MIME của mục đích phải khớp với một trong các loại MIME của bộ lọc.
-
Ở một mức độ hạn chế, việc kết hợp các loại MIME có thể liên quan đến các ký tự đại diện và các biểu thức thông thường.
-
Nếu mục đích có một lược đồ URI, để phù hợp với mục đích, bộ lọc đích phải có một lược đồ URI phù hợp.
-
Nếu một bộ lọc đích có các lược đồ URI, để phù hợp với bộ lọc đích, một ý định phải có một lược đồ URI và lược đồ URI của ý đồ phải phù hợp với một trong các lược đồ URI của bộ lọc.
-
Để hoàn tất danh sách này, hãy sao chép hai quy tắc cuối cùng, thay đổi một hoặc hai chữ trong mỗi bản sao:
Nếu mục đích có một máy chủ
-
URI , để phù hợp với intent, bộ lọc đích phải có một host URI phù hợp . Nếu một bộ lọc đích có URI
-
, để phù hợp với bộ lọc ý đồ, thì ý định phải có máy chủ lưu trữ URI và máy chủ lưu trữ URI phải khớp với một trong số các máy chủ lưu trữ URI s của bộ lọc. Nếu mục đích có cổng URI
-
, để phù hợp với mục đích, bộ lọc đích phải có cổng kết hợp của URI. Nếu một bộ lọc đích có URI
-
cổng , để phù hợp với bộ lọc đích, mục đích phải có cổng URI và cổng URI của ý định < phải khớp với một trong số các URI của bộ lọc trên t s . Nếu mục đích có đường dẫn URI
-
, để phù hợp với mục đích, bộ lọc đích phải có đường dẫn URI phù hợp . Nếu một bộ lọc đích có đường dẫn URI
-
, để phù hợp với bộ lọc đích, mục đích phải có đường dẫn URI và đường dẫn của URI phải khớp với một trong các đường dẫn URI của bộ lọc .
