0

時間制限付きでアンドロイド通話の電話アクティビティ(Intent.ACTION_CALL)を開始しようとしています(アクティビティは限られた時間、たとえば10秒のみで機能します)。それを行う方法はありますか、それとも独自の通話アクティビティを作成する必要がありますか?

//解決策私の解決策は、 http://www.codeproject.com/Articles/548416/Detecting-incoming-and-outgoing-phone-calls-on-Andのような発信受信機を持つサービスを作成することでした

レシーバーにはメソッドがあります

try {
        String serviceManagerName = "android.os.ServiceManager";
        String serviceManagerNativeName = "android.os.ServiceManagerNative";
        String telephonyName = "com.android.internal.telephony.ITelephony";

        Class<?> telephonyClass;
        Class<?> telephonyStubClass;
        Class<?> serviceManagerClass;
        Class<?> serviceManagerNativeClass;
        Method telephonyEndCall;
        // Method getService;
        Object telephonyObject;
        Object serviceManagerObject;

        telephonyClass = Class.forName(telephonyName);
        telephonyStubClass = telephonyClass.getClasses()[0];
        serviceManagerClass = Class.forName(serviceManagerName);
        serviceManagerNativeClass = Class.forName(serviceManagerNativeName);

        Method getService = // getDefaults[29];
                serviceManagerClass.getMethod("getService", String.class);

        Method tempInterfaceMethod = serviceManagerNativeClass.getMethod(
                "asInterface", IBinder.class);

        Binder tmpBinder = new Binder();
        tmpBinder.attachInterface(null, "fake");

        serviceManagerObject = tempInterfaceMethod.invoke(null, tmpBinder);
        IBinder retbinder = (IBinder) getService.invoke(serviceManagerObject, "phone");
        Method serviceMethod = telephonyStubClass.getMethod("asInterface", IBinder.class);

        telephonyObject = serviceMethod.invoke(null, retbinder);
        telephonyEndCall = telephonyClass.getMethod("endCall");

        telephonyEndCall.invoke(telephonyObject);

    } catch (Exception e) {
        e.printStackTrace();
}
4

1 に答える 1

2

目覚まし時計を使用し、telephonyService.endCall() を使用して通話を終了する必要があります。

于 2013-05-07T14:53:30.540 に答える