传入的消息自动读取?

时间:2017-03-15 05:04:56

标签: android

我正在使用广播接收器类自动阅读消息

  

但我遇到了一些问题,

    1. 我正在使用缩进将数据传递给另一个活动,我不知道这是正确的方法吗?如果有更好的方法,请告诉我。
    1. 我的应用程序会自动从消息中读取OTP,但每当有新消息到达时它会读取每条消息(例如客户关怀消息和任何消息)我想只读取消息处于运行状态的应用程序。
  

这是我的代码,

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                switch(position){
                    //Do your fragment specific task here
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

}`

  

在另一项活动中

public class IncomingSms extends BroadcastReceiver {

final SmsManager sms = SmsManager.getDefault();
String message;

@Override
public void onReceive(Context context, Intent 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;
                message = currentMessage.getDisplayMessageBody();

                Intent a = new Intent(context, OtpConformation.class);
                a.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                a.putExtra("KEY_1", message);
                context.startActivity(a);

            }
        }

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

    }
}
  

在我的清单中

    Intent intent = getIntent();
    message = intent.getStringExtra("KEY_1");
    OtpEdt = (EditText)findViewById(R.id.Otp_editText);
    OtpEdt.setText(message);`

2 个答案:

答案 0 :(得分:0)

问题:1 我正在使用意图将数据传递给另一个活动,但不需要意图,将数据传递给另一个活动的任何其他想法?

  

Ans:您可能想要考虑SharedPreference对象。它有一个   简单的API,可以在应用程序的活动中访问。这里   就是一个例子 -   https://developer.android.com/guide/topics/data/data-storage.html#pref

     

在这里参考官方文档 -   https://developer.android.com/reference/android/content/SharedPreferences.html

问题2:我的应用在应用关闭时自动阅读消息?我想阅读消息只有应用程序正在运行时间

  

答案:您可以按ActivityManager查看应用状态。请参考   以下方法。

public static boolean isAppRunning(Context context)
    {
        ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfos = activityManager.getRunningAppProcesses();


        for (ActivityManager.RunningAppProcessInfo processInfo : runningAppProcessInfos) {

            if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
                for (String activeProcess : processInfo.pkgList)
                {
                    Log.i("GCM", activeProcess + ":" + processInfo.importance);

                    if (activeProcess.equals(context.getPackageName())) {
                        return true;
                    }
                }
            }
        }
        return false;
    }

答案 1 :(得分:0)