Android 在收到短信时重新启动强制停止的应用程序

Android 在收到短信时重新启动强制停止的应用程序,android,Android,我正在尝试在收到短信后重新启动我的应用程序,如果它被强制停止。这是我的密码。 它没有重新启动应用程序。我是否应该尝试将receiver作为另一个类编写。 在舱单中: <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <receiver and

我正在尝试在收到短信后重新启动我的应用程序,如果它被强制停止。这是我的密码。 它没有重新启动应用程序。我是否应该尝试将receiver作为另一个类编写。 在舱单中:

   <uses-permission android:name="android.permission.SEND_SMS" />
   <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <receiver android:name=".MySMSbr"> 
     <intent-filter> 
        <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
    </receiver> 

 My mainActivity onCreate() :

   private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
BroadcastReceiver SMSbr;

  public void onCreate(Bundle savedInstanceState) {
    Toast.makeText(getApplicationContext(),"in OnCreate", Toast.LENGTH_LONG).show();
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);      
     SMSbr = new BroadcastReceiver() 
        {

          @Override
          public void onReceive(Context context,Intent intent) 
          {
              this.abortBroadcast();
              Toast.makeText(context, "in onReceive", Toast.LENGTH_LONG).show();
              toggleLogging(AppSettings.getServiceRunning(MainActivity.this),
                        AppSettings.getLoggingInterval(MainActivity.this));
              this.clearAbortBroadcast();
            }//end of onReceive method

          };//end of BroadcastReceiver

          IntentFilter SMSfilter = new IntentFilter(SMS_RECEIVED);
          this.registerReceiver(SMSbr, SMSfilter);
  }
    in togglelogging the service is started
    where is it going wrong.

我的主要活动onCreate():
私有静态最终字符串SMS_RECEIVED=“android.provider.Telephony.SMS_RECEIVED”;
广播接收机SMSbr;
创建时的公共void(Bundle savedInstanceState){
Toast.makeText(getApplicationContext(),“in OnCreate”,Toast.LENGTH_LONG.show();
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SMSbr=新广播接收器()
{
@凌驾
公共void onReceive(上下文、意图)
{
这个.abortBroadcast();
Toast.makeText(上下文“in-onReceive”,Toast.LENGTH_LONG.show();
切换日志记录(AppSettings.getServiceRunning(MainActivity.this),
AppSettings.getLoggingInterval(MainActivity.this));
这个.clearbortbroadcast();
}//接收结束方法
};//广播接收器的结尾
IntentFilter SMSfilter=新的IntentFilter(收到SMS_);
该注册接收服务器(SMSbr、SMSfilter);
}
在togglelogging中,启动服务
哪里出了问题。

您在清单中声明了一个
广播接收者,即静态接收者,但实际上您没有这样的类,您正在活动中创建一个动态接收者。

实际上,您正在做的是在活动开始时注册接收者,但您需要的是另一种方式(在接收者收到广播后启动您的活动/应用)。
您需要创建一个名为
SMSbr extends BroadcastReceiver
的类,在那里您可以执行逻辑。


这样,您将始终注册接收器,当接收到短信广播时,它将唤醒您的应用程序。

AFAIK,在Android 3.x上,强制停止的应用程序不能通过
Intent
重新启动,新的我该怎么办?在另一个进程中启动的服务应保持活动状态首先,为什么您的应用程序强制停止?由用户还是由安卓操作系统?如果使用Android操作系统,您可以使用其他一些技巧来最大化服务的持续时间,例如。