2010-11-02 29 views
8

Tôi muốn triển khai cổng để xử lý các cuộc gọi đi.Tương đương với Android 1.6 EXTRA_GATEWAY_URI

Trong các phiên bản mới nhất của Android 2.x tôi có thể làm điều này một cách dễ dàng với ACTION_CALL ẩn chuỗi thêm: "com.android.phone.extra.GATEWAY_URI"

Nhưng trong các phiên bản trước đó, như 1.6, tôi don 't biết làm thế nào để làm điều đó. Nó phải là có thể bởi vì Google Voice đang làm điều đó. Ai đó có thể vui lòng giúp tôi?

Cảm ơn, Emmanuel

+0

Về cơ bản tôi muốn có thể gọi một số điện thoại, nhưng có số khác nhau được hiển thị cho người dùng. Điều này sẽ hữu ích cho các ứng dụng thẻ gọi điện thoại chẳng hạn. – Emmanuel

+0

Tôi phải làm gì để nhận được câu trả lời này? – Emmanuel

+0

Mã nguồn ban đầu không phải là mã nguồn mở ở đâu đó. Bạn có thể quét đơn giản việc triển khai và sao chép mã cần thiết. – CodingBarfield

Trả lời

2

Hey Emmanuel, 76% thiết bị đã chạy Android 2.x có thể nỗ lực đó là lãng phí. Gingerbread dự kiến ​​sẽ được tung ra vào cuối năm nay, điều này sẽ đẩy tỷ lệ 1,6 thiết bị xuống sâu hơn. Trong chưa đầy nửa năm Android 2.x và cao hơn sẽ vượt quá mốc 80%. Chỉ cần nhìn vào bản phân phối phiên bản Platform http://d.android.com/resources/dashboard/platform-versions.html. Có thể xem mã nguồn trong Dự án nguồn mở Android.

Tôi đã tìm thấy chuỗi bạn đã đề cập trong InCallScreen.java. Có lẽ điều đó mang lại cho bạn một cách để tìm hiểu về mã nguồn cũ hơn để cố gắng tìm hiểu xem bạn có thể truy cập nó thông qua một số API không có giấy tờ hay không. Nhưng đề nghị của tôi sẽ không bận tâm với 25% cuối cùng của 1,6 thiết bị mà họ sẽ biến mất nhanh chóng.

[Update] Vì nó là một yêu cầu để làm cho nó hoạt động, tôi sẽ đề nghị bạn biên dịch lại ứng dụng điện thoại từ kho git và làm cho nó có thể gỡ lỗi theo cách bạn có thể thấy chính xác những gì đang xảy ra. Có lẽ có một thiết bị ASOP chạy 1.6 sẽ là lựa chọn tốt nhất của bạn để tìm hiểu sâu về cách Android đang thực hiện nó. Về cơ bản bạn sẽ phải quay lại cổng tất cả các mã có liên quan đến tính năng này trong 2.x trở lại 1.6. Từ quan điểm thời gian đến thị trường, tôi khuyên bạn nên ứng dụng với hỗ trợ 2.x và phát hành phiên bản thứ hai được thiết kế cho 1.6. Trì hoãn việc phát hành chỉ vì 1,6 dường như là một ý tưởng kinh doanh tồi tệ.

+0

Theo nghĩa nào đó, tôi đồng ý với bạn nhưng đây là yêu cầu của chủ nhân của tôi và tôi phải giao hàng. Tôi đã nhìn vào mã cũ hơn nhưng tôi không biết nó hoạt động như thế nào. Tôi đã thử chơi với các tính năng bổ sung mà không thành công. Về cơ bản tôi muốn có thể gọi một số điện thoại, nhưng có một số khác nhau được hiển thị cho người dùng. – Emmanuel

+0

Chỉ cần cập nhật câu trả lời của tôi. Có một cái nhìn. – AGrunewald

+0

Tôi chắc chắn là tôi hiểu. Bạn có muốn tôi gỡ lỗi ứng dụng Điện thoại trong khi chạy Google Voice không? Tôi không chắc chắn làm thế nào để làm điều đó ... Trước tiên tôi phải cài đặt Google Voice trên trình mô phỏng - không có ý tưởng làm thế nào để làm điều đó. Google Voice thứ hai không khả dụng ở Canada. Tôi phải ăn gian. – Emmanuel

0

Mã đó bằng GATEWAY_URI chắc chắn đã được thêm vào trong Eclair. Nhìn vào AOSP, trong gói/apps/Điện thoại/src/com/android/điện thoại/InCallScreen.java, mà bit của mã là hoàn toàn inexistant trong Donut:

// If a provider is used, extract the info to build the 
    // overlay and route the call. The overlay will be 
    // displayed the first time updateScreen is called. 
    if (PhoneUtils.hasPhoneProviderExtras(intent)) { 
     mProviderLabel = PhoneUtils.getProviderLabel(this, intent); 
     mProviderIcon = PhoneUtils.getProviderIcon(this, intent); 
     mProviderGatewayUri = PhoneUtils.getProviderGatewayUri(intent); 
     mProviderAddress = PhoneUtils.formatProviderUri(mProviderGatewayUri); 
     mProviderOverlayVisible = true; 

     if (TextUtils.isEmpty(mProviderLabel) || null == mProviderIcon || 
      null == mProviderGatewayUri || TextUtils.isEmpty(mProviderAddress)) { 
      clearProvider(); 
     } 
    } else { 
     clearProvider(); 
    } 

Tôi không thể nhìn thấy bất kỳ thay thế. Bạn may mắn nhất có thể để có ứng dụng Điện thoại từ Donut, thêm những gì bạn cần và phát hành nó như một ứng dụng Điện thoại mới trên các thiết bị Donut ...

+0

Tôi cũng đang tìm kiếm mã nguồn và tôi đã thông báo rằng API bị thiếu trong phiên bản 1.6 và trước đó. Nhưng vì Google Voice có thể làm điều đó, nên phải có một số API khác mà tôi có thể sử dụng để tạo ra các kết quả tương tự. Tôi nhìn vào những thứ khác nhưng không thể tìm thấy gì cả. Tôi thấy kỳ lạ là đối với ACTION_CALL, số điện thoại được chỉ định trong cả EXTRA_PHONE_NUMBER và trong URI ý định nhưng chỉ có số URI ý định có vẻ quan trọng. Bất cứ điều gì tôi đưa vào EXTRA_PHONE_NUMBER dường như bị bỏ qua. Hoặc có thể có hành động bí mật để thực hiện cuộc gọi Google Voice? – Emmanuel

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