2011-01-12 64 views
19

Trong ứng dụng này tôi đang phát triển, tôi cần tải/gọi một ứng dụng khác đã được cài đặt trên điện thoại. Nó là một ứng dụng cho việc sử dụng cá nhân của riêng tôi, vì vậy không cần phải kiểm tra xem các ứng dụng khác được cài đặt - tôi biết nó là.Gọi một ứng dụng từ một ứng dụng khác

Tôi đã giải quyết vấn đề này hàng giờ, nhưng tôi không thể tìm thấy bất kỳ thứ gì có hiệu quả. Chủ yếu là vì các hướng dẫn cho việc tìm kiếm tên gói và tên lớp thực sự xấu.

Thông qua cmd và adb Tôi đã có thể thấy rằng thông tin liên quan đến ứng dụng tôi muốn gọi là: gói: /data/app/com.soundcloud.android-1.apk=com.soundcloud.android (đó là chính xác những gì nó nói trong cửa sổ cmd.)

tôi đã cố gắng một cái gì đó như thế này:

Intent i = new Intent(); 
i.setClassName("/data/app/com.soundcloud.android-1.apk", "com.soundcloud.android"); 
startActivity(i); 

Nhưng ứng dụng của tôi chỉ treo để thay thế. Tôi đã sử dụng mã ở trên vì ai đó đã nói rằng điều này có thể gọi một ứng dụng:

Intent i = new Intent(); 
i.setClassName("<package_name>","<Class Name(with package name)>"); 
startActivity(i); 

Có ai biết viết gì thực sự không?

P .: ứng dụng của riêng tôi không cần bất kỳ thông tin nào về những gì đang xảy ra trong ứng dụng được gọi.

+0

bạn không hiểu cái gì vậy? i.setClassName ("", ""); ? – Falmarri

+0

Tôi không biết phải đưa vào mỗi thông số như thế nào. Hoặc nếu nó thậm chí sẽ làm việc theo cách này. – eightx2

Trả lời

36

Sử dụng PackageManager để có được một ý định cho gói:

PackageManager pm = getPackageManager(); 
Intent intent = pm.getLaunchIntentForPackage("com.example.package"); 
startActivity(intent); 
+1

Cảm ơn rất nhiều, tôi đã sử dụng tùy chọn PackageManager, hoạt động như một sự quyến rũ! – eightx2

+0

Trình quản lý gói đang hoạt động, nhưng mục đích không hoạt động – DAS

+0

PackageManager đang hoạt động tốt nhờ rất nhiều ..... – naresh

1

Tài liệu là here.

Tôi nghĩ trong ví dụ của bạn, com.soundcloud.android thực ra là tên gói, do đó, đó phải là đối số đầu tiên. Đối với thứ hai, bạn vẫn cần phải tìm ra lớp để sử dụng.

Nếu bạn không có mã, bạn có thể kiểm tra cách tìm hiểu lớp học từ apk với this.

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