Android 自动读取传入消息?
我正在使用广播接收器类自动读取消息 但是我面临一些问题Android 自动读取传入消息?,android,Android,我正在使用广播接收器类自动读取消息 但是我面临一些问题 我正在使用缩进将数据传递给另一个活动,我不知道这是正确的方法吗?如果有更好的办法,请告诉我 我的应用程序会自动从邮件中读取OTP,但只要出现新邮件(如客户关怀邮件和任何邮件),它就会读取每条邮件。我只想在应用程序处于运行状态时读取邮件 这是我的密码 在我的舱单上 问题:1 我使用intent将数据传递给另一个活动,但不需要intent,是否还有其他将数据传递给另一个活动的方法 ANS:您可能需要考虑SyrdExcel对象。它
- 我正在使用缩进将数据传递给另一个活动,我不知道这是正确的方法吗?如果有更好的办法,请告诉我
- 我的应用程序会自动从邮件中读取OTP,但只要出现新邮件(如客户关怀邮件和任何邮件),它就会读取每条邮件。我只想在应用程序处于运行状态时读取邮件李>
问题:1
我使用intent将数据传递给另一个活动,但不需要intent,是否还有其他将数据传递给另一个活动的方法
ANS:您可能需要考虑SyrdExcel对象。它有一个
简单的API,可跨应用程序的活动访问。在这里
这就是一个例子-
请参阅此处的官方文件-
问题2:我的应用程序在应用程序关闭时自动读取消息?我只想阅读消息应用程序正在运行时间
回答:您可以通过ActivityManager
检查应用程序状态。请参阅
下面的方法
publicstaticbooleaninsapprunning(上下文)
{
ActivityManager ActivityManager=(ActivityManager)context.getSystemService(ACTIVITY_服务);
List runningAppProcessInfos=activityManager.getRunningAppProcesss();
对于(ActivityManager.RunningAppProcessInfo processInfo:runningAppProcessInfos){
if(processInfo.importance==ActivityManager.RunningAppProcessInfo.importance\u前台){
for(字符串activeProcess:processInfo.pkgList)
{
Log.i(“GCM”,activeProcess+:“+processInfo.importance);
if(activeProcess.equals(context.getPackageName())){
返回true;
}
}
}
}
返回false;
}
- 缩进是通过活动进行数据通信的好方法
- 即使应用程序已关闭,也可以接收短信
您可以检查应用程序是否处于Foreground模式。参考
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);`
<receiver android:name=".IncomingSms"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
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;
}