有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android:使用广播接收器

我想在手机上读短信,我已经实现了IncomingSms。java将检查新的SMS作为

收入。爪哇

public class IncomingSms extends BroadcastReceiver {

// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();

public void onReceive(Context context, Intent intent) {

    // Retrieves a map of extended data from the intent.
    final Bundle bundle = intent.getExtras();

    try {

        if (bundle != null) {

            final Object[] pdusObj = (Object[]) bundle.get("pdus");

            for (int i = 0; i < pdusObj.length; i++) {

                SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                String phoneNumber = currentMessage.getDisplayOriginatingAddress();

                String senderNum = phoneNumber;
                String message = currentMessage.getDisplayMessageBody();

                Log.i("SmsReceiver", "senderNum: " + senderNum + "; message: " + message);


                // Show Alert
                int duration = Toast.LENGTH_LONG;
                Toast toast = Toast.makeText(context,
                        "senderNum: "+ senderNum + ", message: " + message, duration);
                toast.show();

            } // end for loop
        } // bundle is null

    } catch (Exception e) {
        Log.e("SmsReceiver", "Exception smsReceiver" +e);

    }
}

}

但现在的问题是,我想在我的另一个片段中调用onReceive,但我不知道在onReceive方法中传递什么作为第二个参数,该方法要求

救命


共 (2) 个答案

  1. # 1 楼答案

    如果你想一接到电话

    private void sendBroadcastToAPI() {
        Intent intent = new Intent();
        String action = "your reciver action";
        Bundle bundle = new Bundle();//save data into bundle
        intent.putExtras(bundle);
        intent.setAction(action);
        sendBroadcast(intent);
    }
    
  2. # 2 楼答案

    1. 必须在类中添加公共接口,并从中创建静态实例
    2. 在片段集界面中
    3. 像这样

      public class IncomingSms extends BroadcastReceiver {
      
      public interface IReceiveSMS{
        public void onReceiveData(/*inser your params here*/);
      }
      public static IReceiveSMS receiverSMS;
      // Get the object of SmsManager
      final SmsManager sms = SmsManager.getDefault();
      
      public void onReceive(Context context, Intent intent) {
      
      // Retrieves a map of extended data from the intent.
      final Bundle bundle = intent.getExtras();
      
      try {
      
          if (bundle != null) {
      
          final Object[] pdusObj = (Object[]) bundle.get("pdus");
      
          for (int i = 0; i < pdusObj.length; i++) {
      
              SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
              String phoneNumber = currentMessage.getDisplayOriginatingAddress();
      
              String senderNum = phoneNumber;
              String message = currentMessage.getDisplayMessageBody();
      
              Log.i("SmsReceiver", "senderNum: " + senderNum + "; message: " + message);
      
      
              // Show Alert
              int duration = Toast.LENGTH_LONG;
              Toast toast = Toast.makeText(context,
                      "senderNum: "+ senderNum + ", message: " + message, duration);
              toast.show();
      
          } // end for loop
        if(receiverSMS != null)
            receiverSMS.onReceiveData(/*inser your params here*/);
      } // bundle is null
      
         } catch (Exception e) {
        Log.e("SmsReceiver", "Exception smsReceiver" +e);
      
          }
        }
      
    4. 在你的片段中

        IncomingSms.receiverSMS = new IReceiveSMS{
          @Override
          public void onReceiveData(/*inser your params here*/)
          {
           //use params
          }
       }
      
    5. 享受