2011-04-27 32 views
5

Tôi muốn tìm cách tạo lệnh mà tôi có thể gửi cho ứng dụng của mình bằng cách sử dụng shell adb hoặc tương tự. Bằng cách này tôi có thể thực hiện một số thay đổi nhỏ cho chương trình của mình mà không phải tải lại ứng dụng của mình mỗi khi tôi thay đổi bất kỳ thứ gì.Tôi có thể sử dụng vỏ adb để gửi lệnh đến ứng dụng của tôi

Có cách nào để mở vỏ adb và gửi lệnh đến ứng dụng đang chạy không?

Nếu điều đó là không thể, thì cách nào có thể gửi lệnh đến ứng dụng của tôi để tôi có thể thực hiện những việc như (Di chuyển các thành phần giao diện người dùng) hoặc (Tạo tệp từ URL) hoặc một số thứ khác. ... Về cơ bản, tôi muốn có thể gửi các lệnh chuỗi đến ứng dụng của mình .....

Nếu tôi có thể thực hiện điều đó bằng các công cụ dòng lệnh sẽ ngọt ngào. Nếu không thì cách tốt nhất để làm điều này là gì?

Trả lời

5

Từ vỏ adb, nhập am. Bạn có thể bắt đầu các hoạt động và dịch vụ cũng như gửi các mục đích phát sóng. Không có đối số nào sẽ in thông tin sử dụng.

Từ máy chủ, bạn có thể thực hiện adb shell am <command> nếu bạn muốn gọi điều này từ tập lệnh.

+0

Điều này có nghĩa là tôi phải yêu cầu nhà cung cấp xử lý yêu cầu URI không? hoặc tôi có thể gửi các lệnh tùy ý không? –

+0

nếu có. bạn có biết điểm khởi đầu tốt cho giải pháp này không? –

+0

Bạn có thể gửi bất kỳ lệnh nào mà bạn có thể mã hóa dưới dạng Mục đích. :) http://developer.android.com/reference/android/content/BroadcastReceiver.html giải thích cách xử lý mục đích phát sóng. – adamp

3

Tùy chọn adb shell am có lẽ là tùy chọn sạch/tốt nhất/tuyệt vời nhất, nhưng bạn có thể có một Chủ đề trong ứng dụng của bạn kiểm tra sự hiện diện của một tệp cụ thể trên thẻ SD. Giống như (KHÔNG SỬ DỤNG MÃ NÀY KHÔNG NGHIÊM TRỌNG SỬA ĐỔI):

public void run() 
{ 
    File f = new File("/sdcard/appcommands"); 
    while(!stop){ 
     if(f.exists()){ 
     // read file 
     // obey commands 
     // remove file or use some other timing monitor 
     } 
    } 
} 

sau đó bạn chỉ có thể sử dụng adb push để ghi tập tin lệnh. Thực sự không hiệu quả, nhưng nó có thể được thực hiện để làm việc trong một pinch. Bạn cũng có thể làm những việc phức tạp hơn như tạo các máy chủ TCP/HTTP cục bộ và sử dụng chuyển tiếp cổng adb, nhưng điều đó có thể chỉ là quá mức cần thiết.

+0

đã bỏ phiếu cho giải pháp nhanh chóng sáng tạo. Nhưng tôi có khả năng sẽ chấp nhận vỏ adb như là giải pháp của tôi. Tôi chỉ cần lấy thêm thông tin về nó. –

+0

Hoặc bạn có thể nghe các chương trình phát sóng thay vì 'while (! Stop)' và vẫn đẩy các lệnh thông qua 'adb push'. Điều này sẽ cho phép gửi dữ liệu phức tạp hơn đến ứng dụng. –

Các vấn đề liên quan