2011-02-03 33 views
5

Bạn gặp sự cố khi làm việc này, dưới đây là tổng quan nhanh về ý tưởng. Trước tiên, tôi không thể thay đổi logic đằng sau điều này, nó là một yêu cầu cụ thể từ khách hàng, tôi nhận ra rằng với bất kỳ công cụ nào như AnyCut nó có thể bị bỏ qua nhưng điều đó không quan trọng.Android Khởi chạy hoặc đưa lên một ứng dụng khác thông qua Intent

Khách hàng của tôi cung cấp một bộ ứng dụng, ý tưởng là tất cả các ứng dụng đổ chuông vào bộ sẽ được khởi chạy từ "ứng dụng Trang tổng quan", để tôi chỉ hiển thị ứng dụng Trang tổng quan trong trình khởi chạy chính chứ không phải tất cả biểu tượng ứng dụng.

Cho phép sử dụng hai Ứng dụng để giải quyết ý tưởng. Ứng dụng Trang tổng quan (A) và Ứng dụng nhận (B).

Tôi muốn thiết lập bộ lọc ý định (tôi nghĩ) trên ứng dụng B để bất cứ khi nào tôi vào ứng dụng A và nhấp vào biểu tượng ứng dụng B, ứng dụng sẽ được khởi chạy hoặc bắt đầu từ vị trí đó (đưa ra trước).

Điều này có thể thực hiện được không? Nếu vậy, làm thế nào tôi có thể làm điều đó? Tôi quản lý để có được nó để khởi động bằng cách đặc biệt ra mắt một hoạt động trong ứng dụng sử dụng:

Intent i = new Intent(); 
i.setClassName("PACKAGE_NAME","SPECIFIC_CLASS"); 
startActivity(i); 

Nhưng đó không phải là hành vi mà tôi muốn, vì nó luôn luôn bắt đầu ứng dụng B ở cùng một chỗ.

Thanx trước, Stefano

Chỉnh sửa: Thêm một số thông tin mới. Tôi đã xem xét DDMS.

Nếu tôi khởi chạy ứng dụng từ đầu thông qua trình khởi chạy Android chính, ý định chính xác giống như khi tôi rời nút trang chủ được nhấn và sau đó chỉ đưa ứng dụng lên phía trước, hoạt động bao giờ im vào. Vì vậy, tôi đang cố gắng tái tạo, không thành công cho đến bây giờ, mục đích này.

INFO/ActivityManager(1292): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.package/.uiPackage.Activity} 

Đây là cách AnyCut làm nó

Intent { act=android.intent.action.VIEW flg=0x10000000 cmp=com.example.package/.uiPackage.Activity bnds=[125,242][235,360]} 

Bất kỳ ý tưởng làm thế nào tôi có thể đi về việc tạo cùng ý định chính xác? Tôi thậm chí không thể tìm thấy lá cờ đó trong API Intent.

Trả lời

6

Đã tìm ra, đây là cách tôi đã thực hiện.

Intent i = new Intent(); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.setAction("android.intent.action.VIEW"); 
i.setComponent(ComponentName.unflattenFromString("com.example.package/com.example.package.activityName")); 
startActivity(i); 
+0

Điều này thật thú vị. Điều này thực sự sẽ đưa bạn trở lại nơi bạn rời đi trong các ứng dụng thứ cấp được khởi chạy từ ứng dụng chính (bảng điều khiển)? Nếu vậy, đây là điều tốt để biết! – ice911

+0

@ ice911 Nó chính xác những gì bạn mô tả, có vẻ như android kéo lên các ứng dụng trong trạng thái nó được. Tôi đã thử nghiệm điều này trên trình giả lập, một nexus một g2 và một tab thiên hà và nó hoạt động trên tất cả chúng. 'activityName' im đề cập đến là tên được đánh dấu là chính trong Tệp kê khai. – blindstuff

+0

Tuyệt vời. Làm việc như một say mê. –

0

Tôi không khá chắc chắn tôi sau khi kết quả mong đợi bạn muốn xem, nhưng sau đây sẽ khởi động ứng dụng từ bảng điều khiển và loại bỏ các bảng điều khiển từ hoạt động chồng bỏ chọn ứng dụng chạy:

Intent i = new Intent(); 
i.setClassName("PACKAGE_NAME","SPECIFIC_CLASS"); 
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 

Tôi tin rằng điều này sẽ bắt đầu ứng dụng như thể bạn đang bắt đầu bất kỳ ứng dụng nào khác.

Vui lòng thêm thông tin khác về logic của bạn nếu đây không phải là những gì bạn đang tìm kiếm.

+0

Không chính xác những gì tôi đang tìm kiếm xin lỗi, tôi muốn không chỉ định lớp tôi muốn mở, thay vì chỉ gọi các ứng dụng khác trong những gì hoạt động bao giờ nó rời đi. – blindstuff

+0

Tôi muốn người dùng có thể sử dụng ứng dụng, nhưng ví dụ khi anh ấy nhấp vào nhà, sau đó quay lại bảng điều khiển và tiếp tục sử dụng ứng dụng ở đó. – blindstuff

+1

'thay vì chỉ gọi các ứng dụng khác trong những gì bao giờ hoạt động nó rời đi' Đó không phải là thực sự làm thế nào android hoạt động – Falmarri

0

Tôi nghĩ rằng khi bạn chuyển các hoạt động hành động mặc định android là để sắp xếp tạm dừng hay tiếp tục hoạt động trong trạng thái của nó cho người sử dụng để quên nó ở cuối cùng. Tôi biết có một cách để làm cho nó để nhà nước không được lưu khi chuyển đổi các hoạt động nhưng tôi không thể nhớ nó ra khỏi đỉnh đầu của tôi.

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