傻狗123 2016-04-02 06:29 采纳率: 0%
浏览 2058
已结题

通过aidl 实现打电话功能 报错

错误信息

 04-02 11:42:52.816: E/AndroidRuntime(25387): FATAL EXCEPTION: main
04-02 11:42:52.816: E/AndroidRuntime(25387): Process: com.example.call, PID: 25387
04-02 11:42:52.816: E/AndroidRuntime(25387): java.lang.NoSuchMethodError: No interface method call(Ljava/lang/String;)V in class Lcom/android/internal/telephony/ITelephony; or its super classes (declaration of 'com.android.internal.telephony.ITelephony' appears in /system/framework/framework.jar:classes2.dex)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at com.example.call.MainActivity.onCreate(MainActivity.java:37)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.app.Activity.performCreate(Activity.java:6100)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2481)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2614)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.app.ActivityThread.access$800(ActivityThread.java:178)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.os.Handler.dispatchMessage(Handler.java:111)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.os.Looper.loop(Looper.java:194)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at android.app.ActivityThread.main(ActivityThread.java:5643)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at java.lang.reflect.Method.invoke(Native Method)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at java.lang.reflect.Method.invoke(Method.java:372)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
04-02 11:42:52.816: E/AndroidRuntime(25387):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
  • 写回答

3条回答

  • 傻狗123 2016-04-02 06:33
    关注

    再此加上文件目录

    图片说明

    MainActivity代码

     package com.example.call;
    
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    
    import com.android.internal.telephony.ITelephony;
    
    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.os.IBinder;
    import android.os.RemoteException;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    
    public class MainActivity extends Activity {
    
        private Method method;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //通过反射机制得到类
    
            try {
                //得到类
                Class clazz = Class.forName("android.os.ServiceManager");
                //得到方法
                method = clazz.getMethod("getService", String.class);
                //调用方法(静态方法不用传对象)
                IBinder iBinder = (IBinder) method.invoke(null, Context.TELEPHONY_SERVICE);
                //得到远程服务接口
                ITelephony telePhone = ITelephony.Stub.asInterface(iBinder);
                //打电话功能
                telePhone.call("15686207622");
            } catch (ClassNotFoundException e) {
                //没有找到这个类
                Log.i("123", "没有找到这个类");
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                // 没有找到这个方法
                Log.i("123", "没有找到这个方法");
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // 方法调用失败
                Log.i("123", "方法调用失败");
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                // 方法调用失败
                Log.i("123", "方法调用失败");
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                // 方法调用失败
                Log.i("123", "方法调用失败");
                e.printStackTrace();
            } catch (RemoteException e) {
                // 拨打电话失败
                Log.i("123", "拨打电话失败");
                e.printStackTrace();
            }
    
        }
    
    
    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?