2011-12-29 30 views
5

Tôi có một chương trình mà tôi đã tạo cho Android 1.6 trở lên và tôi đã thực hiện các kiểm tra để đảm bảo chương trình hoạt động tốt với Ice Cream Sandwich mới (Android 4).Khởi chạy trình duyệt trên Ice Cream Sandwich

Mọi thứ trên ứng dụng hoạt động tốt trừ khi một tác vụ nhất định được thực hiện bởi người dùng, nó được cho là tự động khởi chạy trình duyệt Android. Tuy nhiên vì một số lý do nó có vẻ như tải nó lên trong nền và giữ cho ứng dụng của tôi được hiển thị mà không phải là những gì tôi muốn nó làm. Trên mỗi phiên bản khác của android khi tôi thực thi mã để khởi động trình duyệt, trình duyệt sẽ xuất hiện trên đầu màn hình, do đó khiến ứng dụng của tôi ở chế độ nền mà tôi muốn nó hoạt động.

Dưới đây là đoạn code mà tôi phải khởi động trình duyệt

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.addCategory(Intent.CATEGORY_BROWSABLE); 
intent.setData(Uri.parse(companyURL)); 
startActivity(intent); 

Các companyURL là một biến mà tôi đang sử dụng để phân tích url cho trình duyệt.

Cảm ơn bạn đã trợ giúp bạn có thể cung cấp.

CẬP NHẬT Tôi vừa phát hiện ra rằng nếu trình duyệt không hiện đang chạy (ví dụ: không được nạp trước đó) khi ứng dụng của tôi bắt đầu trình duyệt nó mang nó về phía trước. Tuy nhiên, khi trình duyệt đã được tải trước đó, khi ứng dụng của tôi tải lên lại, trình duyệt sẽ tải xuống trong nền.

+0

Có điều gì đó đang xảy ra hơn những gì bạn đang hiển thị tại đây. Tất cả mọi thứ trong nền tảng và ứng dụng chuẩn khởi chạy trình duyệt với ACTION_VIEW và URI (chẳng hạn như nhấp vào liên kết trong ứng dụng Email hoặc Gmail) và các ứng dụng này hoạt động tốt. – hackbod

Trả lời

0

Thử thêm FLAG_ACTIVITY_BROUGHT_TO_FRONT cờ vào mục đích.

+0

Xin cảm ơn sự giúp đỡ của bạn, tôi đã cố gắng thêm điều đó vào mục đích trước khi tôi bắt đầu nhưng dường như không tạo ra bất kỳ sự khác biệt nào. – Boardy

1

Hãy thử tính năng này đang hoạt động trên ICS cho tôi.

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(companyURL)); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
+0

Cảm ơn sự giúp đỡ của bạn. Điều này đang làm điều tương tự mà tôi đã có mà trình duyệt sẽ xuất hiện lần đầu tiên. Nhưng lần thứ hai trình duyệt sẽ mở trang ở chế độ nền.Sự khác biệt duy nhất là trước khi nó sẽ đi đến trình đơn launcher một lần nữa, nơi như bây giờ nó trở về màn hình chủ. – Boardy

+0

thử thêm cờ này 'FLAG_ACTIVITY_CLEAR_TOP' – Sunny

+0

Vẫn làm điều tương tự. Bit lạ lý do tại sao tôi chỉ gặp vấn đề này trong ICS và không có phiên bản nào khác – Boardy

1

Thông thường bạn không cần danh mục CATEGORY_BROWSABLE. Thử cách sau thay vì:

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.setData(Uri.parse(companyURL)); 
startActivity(intent); 

Trong thực tế, các tài liệu dường như cho thấy CATEGORY_BROWSABLE được thiết kế để được sử dụng theo hướng ngược lại (trình duyệt để ứng dụng của bạn):

Các hoạt động có thể được gọi một cách an toàn từ một trình duyệt phải hỗ trợ danh mục này. Ví dụ: nếu người dùng đang xem trang web hoặc e-mail và nhấp vào liên kết trong văn bản thì liên kết Intent generated execute sẽ yêu cầu danh mục BROWSABLE, để chỉ các hoạt động hỗ trợ danh mục này mới được coi là hành động có thể .

http://developer.android.com/reference/android/content/Intent.html#CATEGORY_BROWSABLE

0

Tôi đang sử dụng đoạn mã sau và làm việc của nó tốt với tôi ngay cả khi trình duyệt đang chạy ở chế độ nền.

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); 
startActivity(intent); 
Các vấn đề liên quan