2011-12-23 46 views
11

Trong ứng dụng của tôi có bố cục tab. và hai tab.Làm cách nào để khởi chạy ứng dụng android trong ứng dụng của tôi trong Android?

  • tab 1 - ứng dụng của tôi enter image description here
  • tab 2 - bất kỳ ứng dụng android bên ngoài (như Danh bạ, gọi dialer vv ..) (i biết làm thế nào để khởi động ứng dụng bên ngoài nhưng nó không chạy bên trong ứng dụng của tôi (có nghĩa là tab sẽ không hiển thị sau khi khởi chạy )).

Cảm ơn trước

+0

Đọc về lớp Intent và tìm hiểu hành động là gì và bạn sẽ giải quyết vấn đề của mình. Chúng tôi sẽ không cung cấp cho bạn câu trả lời. Hiểu cách hệ thống ý định android hoạt động và sau đó nó sẽ là nước thịt. – JoxTraex

+5

@JoxTraex Có thể cho những gì anh ta yêu cầu không? sau đó tôi phải đọc Intent một lần nữa – ingsaurabh

+0

là có thể? Tôi nghi ngờ điều đó . Bạn có thể chạy ứng dụng khác từ ứng dụng của mình nhưng chạy ứng dụng bên trong chế độ xem do ứng dụng đầu tiên tạo ra? –

Trả lời

0

đọc doc (phần mục đích), một số ví dụ:

public class MyTab extends TabActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     final TabHost tabHost = getTabHost(); 

     Intent taskIntent = new Intent(this, Public.class); 
     taskIntent.putExtra(Intent.ACTION_VIEW, "public"); 

     TabHost.TabSpec tsValid = tabHost.newTabSpec("public"); 
     tsValid.setIndicator(getText(R.string.tab_title_public)); 
     tsValid.setContent(taskIntent); 

     tabHost.addTab(tsValid); 

     Intent annIntent = new Intent(this, Private.class); 
     annIntent.putExtra(Intent.ACTION_VIEW, "private"); 

     TabHost.TabSpec tsGenerate = tabHost.newTabSpec("private"); 
     tsGenerate.setIndicator(getText(R.string.tab_title_private)); 
     tsGenerate.setContent(annIntent); 

     tabHost.addTab(tsGenerate); 
    } 

} 
12

tôi có thể đã hiểu lầm này, nhưng trừ khi bạn đã tạo ra rõ ràng intents (làm việc với các nhà phát triển ứng dụng khác hoặc tạo ứng dụng khác mà bạn muốn nhúng) điều này sẽ không thể thực hiện được.

Mỗi ứng dụng chạy Android trong một sandbox: http://developer.android.com/guide/topics/security/security.html

Riêng:

Bởi vì Hố cát cho Android ứng dụng lẫn nhau, các ứng dụng phải chia sẻ một cách rõ ràng nguồn và dữ liệu. Họ thực hiện điều này bằng cách tuyên bố các quyền họ cần cho các khả năng bổ sung không được cung cấp bởi hộp cát cơ bản. Ứng dụng khai báo tĩnh các quyền chúng yêu cầu và hệ thống Android nhắc người dùng đồng ý tại thời gian ứng dụng được cài đặt. Android không có cơ chế cho cấp quyền động (tại thời gian chạy) vì nó làm phức tạp trải nghiệm người dùng gây tổn hại cho bảo mật.

Vì vậy, điều này sẽ không thể thực hiện được. Nó có vẻ sai lầm hoặc độc hại để bắt đầu, nhưng tôi sẽ nghiêm túc xem xét lại cách tiếp cận của bạn và suy nghĩ lại những lợi ích được cân nhắc chống lại sự không khả thi thậm chí có thể đạt được những gì bạn yêu cầu.

+1

Đẹp khám phá ..... –

1

Theo tôi, điều này là không thể.

Bạn chỉ có thể hiển thị các hoạt động của riêng bạn trong một số TabHost. Đối với các hoạt động bên ngoài, bạn cần ý định tiềm ẩn, nhưng TabHost không hỗ trợ điều này: Embed external Intent in main Activity

Do đó bạn hiển thị dữ liệu từ ứng dụng nước ngoài trong hoạt động của riêng bạn. Thực hiện việc này, bạn truy vấn nhà cung cấp nội dung mà ứng dụng khác cung cấp (xem http://developer.android.com/guide/topics/providers/content-providers.html) trong hoạt động danh sách của bạn (xem ví dụ hoàn chỉnh tại http://developer.android.com/reference/android/app/ListActivity.html) và bao gồm ListActivity trong TabHost của bạn.

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