2012-04-02 58 views
6

tôi đang tạo ứng dụng lọc cuộc gọi đơn giản hạn chế các cuộc gọi không mong muốn. tôi sử dụng mã sau để hạn chế cuộc gọi nhưng tôi không thể giải quyết vấn đề của dòng này trong mã bên dưới "com.android.internal.telephony.ITelephony telephonyService = (ITelephony) m.invoke (tm);" nó hiển thị thông báo lỗi com.android.internal.telephony không thể được giải quyết thành một loại trong android làm thế nào để giải quyết lỗi này.cách giải quyết lỗi này "com.android.internal.telephony không thể được giải quyết thành loại" trong android

public class CallBlockReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 

    } 

    private void getTeleService(Context context) { 
     TelephonyManager tm = (TelephonyManager) context 
       .getSystemService(Context.TELEPHONY_SERVICE); 
     try { 
      // Java reflection to gain access to TelephonyManager's 
      // ITelephony getter 
      Log.v("", "Get getTeleService..."); 
      Class c = Class.forName(tm.getClass().getName()); 
      Method m = c.getDeclaredMethod("getITelephony"); 
      m.setAccessible(true); 
      com.android.internal.telephony.ITelephony telephonyService = (ITelephony) m.invoke(tm); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      Log.e("", 
        "FATAL ERROR: could not connect to telephony subsystem"); 
      Log.e("", "Exception object: " + e); 
     } 
} 

} 

Hãy giúp tôi.

+2

bạn đã thêm tệp ITelephony.AIDL vào dự án của mình? và nếu bạn đã thêm thì tên gói của bạn phải là tên gói phải là 'com/android/internal/telephony/ITelephony.AIDL' –

+0

không tôi không thêm tệp ITelephony.AIDL. làm thế nào để thêm nó? –

+0

@ ρяσѕρєя K - hiện cấu trúc thư mục này có dưới "myApp/App/src" không? tôi đã thử tạo cấu trúc thư mục này nhưng trình soạn thảo tự động hoàn tất không hiển thị khi nhập "com.example.app ..." – buzibuzi

Trả lời

10

bạn đã thêm ITelephony.AIDL tệp vào dự án của mình? và nếu bạn đã thêm thì tên gói của bạn phải là com/android/internal/telephony/ITelephony.AIDL: để biết thêm thông tin Blocking Incoming call. tải xuống tệp AIDL từ here

+0

Prashant, tạo cấu trúc thư mục com/android/internal/telephony bên trong thư mục src và đặt aidl tập tin trong thư mục điện thoại –

+0

Cảm ơn rất nhiều Imran của nó làm việc ... :) –

+0

làm theo các bước sau và làm sạch dự án làm việc cho tôi. Cảm ơn rất nhiều ... –

0

Bạn đang sử dụng API Android nội bộ/bị ẩn với sự phản ánh.

Kiểm tra xem bạn đang cố gắng gọi tên phương thức hợp lệ - có nhiều khả năng API này đã thay đổi hoặc không tồn tại trong phiên bản bạn đang phát triển.

5

Bạn có thể sử dụng phản chiếu để gọi các phương thức trên đối tượng ITelephony do đó tránh cần chỉ định loại và thêm tệp AIDL. Ví dụ: kết thúc cuộc gọi:

TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
Class<?> c = Class.forName(tm.getClass().getName()); 
Method m = c.getDeclaredMethod("getITelephony"); 
m.setAccessible(true); 
Object telephonyService = m.invoke(tm); 
Class<?> telephonyServiceClass = Class.forName(telephonyService.getClass().getName()); 
Method endCallMethod = telephonyServiceClass.getDeclaredMethod("endCall"); 
endCallMethod.invoke(telephonyService); 
+0

Cảm ơn rất nhiều! Câu trả lời rực rỡ! –

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