无法从Context类型对非静态方法getSystemService(String)进行静态引用

时间:2016-03-17 17:13:19

标签: android

我是android新手。我已经给了所有权限。请告诉我如何实例TelephonyManager

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TelephonyManager telephonyManager= (TelephonyManager) Context.getSystemService(Context.TELEPHONY_SERVICE);
    Class clazz = Class.forName(telephonyManager.getClass().getName());
    Method method = clazz.getDeclaredMethod("getITelephony");
    method.setAccessible(true);
    ITelephony telephonyService = (ITelephony) method.invoke(telephonyManager);
    telephonyService.endCall();

}

1 个答案:

答案 0 :(得分:1)

正如此消息告诉您的那样,byte[] buffer = new byte[2048]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length); DataInputStream dis = new DataInputStream(new ByteArrayInputStream(packet.getData(), packet.getOffset(), packet.getLength())); While(true){ dsocket.receive(packet); dis = new DataInputStream(new ByteArrayInputStream(packet.getData(), packet.getOffset(), packet.getLength())); reader = new MAVLinkReader(dis,MAVLinkMessage.MAVPROT_PACKET_START_V10); mesg = reader.getNextMessage(); while (mesg != null) {...do stuff...} } 不是静态方法,因此您需要一个getSystemService()实例来使用该方法。

调用Context尝试静态访问它。

如果您尝试在活动中执行此操作,则只需拨打Context.getSystemService()getSystemService(),因为活动是一个上下文。

如果您尝试在片段中执行此操作,则可以调用this.getSystemService()