2010-11-16 54 views

Trả lời

45

Để chỉ khởi động mặc định Hoạt động Launcher:

Intent intent = new Intent("android.intent.category.LAUNCHER"); 
intent.setClassName("com.facebook.katana", "com.facebook.katana.LoginActivity"); 
startActivity(intent); 

tôi đã làm một số nghiên cứu, bởi vì tôi muốn tìm thấy điều này :). Tôi tìm thấy một số cách để bắt đầu các hoạt động khác nhau một cách dễ dàng. Nhưng tôi không thể đảm bảo rằng điều này sẽ làm việc sau khi nâng cấp facebook. Tôi đã thử nghiệm nó với ứng dụng facebook hiện tại của tôi và nó hoạt động. Ít nhất tôi đã thử nghiệm nó với "adb shell" bằng cách sử dụng "am start .....".

cơ bản là:

String uri = "facebook://facebook.com/inbox"; 
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); 
startActivity(intent); 

phần facebook.com không được chọn. bạn thậm chí có thể gõ: "facebook: //gugus.com/inbox" có cùng tác dụng.

Cách thực hiện điều này trong adb.

1. Start adb shell through console: "adb shell" 
2. run: "am start -a android.intent.action.VIEW -d facebook://facebook.com/inbox" 

điều này sẽ bắt đầu hoạt động hộp thư đến. Đây là một số ví dụ về Uris. Tôi nghĩ họ tự nói về những gì họ làm.

facebook://facebook.com/inbox 
facebook://facebook.com/info?user=544410940  (id of the user. "patrick.boos" won't work) 
facebook://facebook.com/wall 
facebook://facebook.com/wall?user=544410940 (will only show the info if you have added it as friend. otherwise redirects to another activity) 
facebook://facebook.com/notifications 
facebook://facebook.com/photos 
facebook://facebook.com/album 
facebook://facebook.com/photo 
facebook://facebook.com/newsfeed 

có thể có các tham số additianl mà bạn có thể cung cấp cho một số trong những uris đó, nhưng tôi không có thời gian để xem xét tất cả mã của các hoạt động đó.

Tôi đã làm điều này bằng cách nào? kiểm tra apktool.

+1

Có vẻ như điều này không hoạt động nữa (và nó chắc chắn được sử dụng để!). facebook: //facebook.com/wall? user = 123chỉ cần mở Facebook cho hoạt động Luồng chứ không phải tường của người dùng được chỉ định. – NPike

+1

Đã tìm ra, xem bài đăng của tôi bên dưới về các giao thức mới. – NPike

+0

Xin chào Patrick: Ở đây nó mở ra ứng dụng facebook đã cài đặt, Nhưng tôi cần mở ứng dụng facebook với trạng thái cập nhật được mở cùng với hình ảnh kèm theo trạng thái, cách đạt được điều này ...? bất kỳ trợ giúp nào được đánh giá cao ... –

1

Khởi chạy ứng dụng khác từ ứng dụng của bạn trong Android, chỉ có thể thực hiện nếu hành động Intent bạn kích hoạt phù hợp với bộ lọc ý định của ứng dụng khác mà bạn muốn khởi chạy.

Khi @patrick đã chứng minh, hãy tải facebook.apk xuống trình mô phỏng và thử chạy thông qua lệnh adb shell. Nó hoạt động tốt ..

đèo lọc Ý định và dữ liệu như một Uri

64

Nhìn vào apk Facebook mới nhất (1.6), có vẻ như cả hai "facebook: //" và "fb: //" đã được đăng ký giao thức.

facebook: //

facebook:/chat 
facebook:/events 
facebook:/friends 
facebook:/inbox 
facebook:/info 
facebook:/newsfeed 
facebook:/places 
facebook:/requests 
facebook:/wall 

fb: //

fb://root 
fb://feed 
fb://feed/{userID} 
fb://profile 
fb://profile/{userID} 
fb://page/{id} 
fb://group/{id} 
fb://place/fw?pid={id} 
fb://profile/{#user_id}/wall 
fb://profile/{#user_id}/info 
fb://profile/{#user_id}/photos 
fb://profile/{#user_id}/mutualfriends 
fb://profile/{#user_id}/friends 
fb://profile/{#user_id}/fans 
fb://search 
fb://friends 
fb://pages 
fb://messaging 
fb://messaging/{#user_id} 
fb://online 
fb://requests 
fb://events 
fb://places 
fb://birthdays 
fb://notes 
fb://places 
fb://groups 
fb://notifications 
fb://albums 
fb://album/{%s}?owner={#%s} 
fb://video/?href={href} 
fb://post/{postid}?owner={uid}¹ 

Xin lỗi nếu tôi bỏ lỡ một số ... chỉ chơi với một số ít trong số họ trong giả lập để xem họ có thực sự làm việc - một loạt chúng sẽ khiến ứng dụng Facebook gặp sự cố.

¹ trong đó postid ở định dạng uid_postid, e.g 11204705797_10100412949637447

+0

Chỉ là về để fiddle xung quanh cho việc này. Cảm ơn bạn. Tôi có thể xác nhận rằng những công việc này. –

+0

@NPike có cách nào để liên kết trực tiếp tới ảnh không? Tôi có liên kết uid và http với "photoid". –

+7

Điều này đã được ghi chép ở bất cứ đâu? Tôi đã cố gắng tìm kiếm nó nhưng không thể tìm thấy nó ở bất cứ đâu. Vì vậy, có thể một ngày nào đó điều này phá vỡ ứng dụng của chúng tôi phải không? – Enigma

9

Nếu bất cứ ai muốn trực tiếp mở một bức ảnh

public Intent getOpenFacebookIntent(String pId) { 
    try { 
     activity.getPackageManager().getPackageInfo("com.facebook.katana", 0); 
     return new Intent(Intent.ACTION_VIEW, Uri.parse("facebook:/photos?album=0&photo=" + pId + "&user=" + ownerId)); 
    } catch (Exception e) { 
     return new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/")); 
    } 
} 

startActivity(getOpenFacebookIntent(pid)); 

nơi ownerId là Facebook id của người dùng tải lên hình ảnh này và pidPhotoId

Thưởng thức :))

+0

Nó không hiệu quả với tôi. Có một câu hỏi riêng biệt mà câu trả lời này được trích dẫn (http://stackoverflow.com/questions/36251372/how-to-open-a-specific-album-or-photo-in-facebook-app-using-intent-from- của riêng bạn) và nó cũng không có tác dụng với người khác. – Bartek

+0

Xin chào @Bartek Câu trả lời này quá cũ. Lúc đó nó đang hoạt động. Có rất nhiều thay đổi trong ứng dụng facebook chính nó. Có thể điều này sẽ không hoạt động ngay bây giờ. Xin lỗi vì điều đó. – Sunny

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