我正在使用广播接收器类自动阅读消息
但我遇到了一些问题,
这是我的代码,
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);`
答案 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)
缩进是通过活动进行数据通信的好方法
即使应用关闭也会收到短信