2010-07-25 34 views
9

Tôi muốn chạy cụ thể trình duyệt Android mặc định cho URL đã cho. Tôi đang sử dụng mã này:Khởi chạy Mục đích Trình duyệt với Lớp Tùy chỉnh - không thể tìm thấy Hoạt động

Intent i = new Intent(); 
i.setAction("android.intent.action.VIEW"); 
i.addCategory("android.intent.category.BROWSABLE"); 
i.setClassName("com.google.android.browser", "com.android.browser.BrowserActivity"); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.setData(Uri.parse(url)); 
startActivity(i); 

Các lỗi tôi nhận được là:

Unable to find explicit activity class { 
com.google.android.browser/com.android.browser.BrowserActivity}; 
have you declared this activity in your AndroidManifest.xml? 

Tôi cũng đã cố gắng lọc intents bởi gói:

i.setPackage("com.google.android.browser"); 

thay vì setClassName, nhưng để không có sẵn:

No Activity found to handle Intent { act=android.intent.action.VIEW 
cat=[android.intent.category.BROWSABLE] 
dat=http://www.google.com/ flg=0x10000000 pkg=android } 

Tôi cũng đã thử thêm <uses-library android:name="com.google.android.browser" /> vào tệp kê khai.

Tôi có thiếu gì đó ở đây không?

PS: Tôi không quan tâm đến việc sử dụng startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"))) vì nó sẽ liệt kê tất cả các lựa chọn cho duyệt web Intent.

Trả lời

6

tôi sử dụng nó, được rồi.

intent.setComponent(new ComponentName("com.android.browser", "com.android.browser.BrowserActivity")); 

tôi nghĩ bạn biết điều gì sai. :)

6

Xin lưu ý rằng trình duyệt mặc định có thể bị ghi đè và không phải lúc nào cũng được tích hợp trong ứng dụng trình duyệt, ví dụ như Opera Mini.

Bạn cần phải làm theo cách này:

Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri data = Uri.parse("http://www.google.com"); 
intent.setData(data); 
startActivity(intent); 
+4

Như tôi đã nêu trong câu hỏi của mình, tôi muốn có thể chạy trình duyệt * mặc định của Android *, không phải trình duyệt * mặc định đã chọn *. Là một nút bên, trước tiên tôi đã thử với giải pháp bạn đề cập, nhưng không có kết quả như nó rõ ràng khởi chạy trình duyệt được đặt làm mặc định (hoặc khởi chạy bộ chọn ứng dụng). –

+0

cách sử dụng mục đích này trong lớp không hoạt động? – Maxwell

+0

Hạn chế cho việc này - đối với các tệp html cục bộ, nó khởi chạy ứng dụng HTMLViewer thay vì trình duyệt. – JustAMartin

1

Một cách để mở một URL trong một trình duyệt từ mã là sử dụng một webview.

Tạo một WebViewClientClass rằng mở rộng WebViewClient như:

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    view.loadUrl(url); 
    return true; 
} 

Sau đó tạo một webview. Set webview.setWebViewClient(new WebViewClientClass()); --- đây là giải pháp nhỏ để trình duyệt web mặc định không thay thế.

Sau đó lấy url trong một EditText và thiết lập nó để tải các trình duyệt như:

webview.loadurl(urlfield.getText().toString()); 
webview.requestFocus(); 

này nên tải trình duyệt web với URL mà bạn yêu cầu.

Hy vọng điều này sẽ giúp ... :)

+0

không đặt webview.setWebViewClient nếu bạn muốn trình duyệt web mặc định thực hiện yêu cầu của mình ... – Flash

+1

Tôi không muốn khởi chạy cửa sổ trình duyệt (hoặc cho vấn đề đó sử dụng * trình duyệt * của riêng tôi). Tôi muốn khởi chạy trình duyệt mặc định * đi kèm với Android *.Ngoài ra, việc khởi chạy cửa sổ trình duyệt sẽ giới thiệu thêm sự phức tạp, như quản lý bộ nhớ cache, dấu trang, nút quay lại, v.v., Btw, vui lòng định dạng mã của bạn;) –

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