Android 在收到短信时重新启动强制停止的应用程序
我正在尝试在收到短信后重新启动我的应用程序,如果它被强制停止。这是我的密码。 它没有重新启动应用程序。我是否应该尝试将receiver作为另一个类编写。 在舱单中:Android 在收到短信时重新启动强制停止的应用程序,android,Android,我正在尝试在收到短信后重新启动我的应用程序,如果它被强制停止。这是我的密码。 它没有重新启动应用程序。我是否应该尝试将receiver作为另一个类编写。 在舱单中: <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <receiver and
<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操作系统,您可以使用其他一些技巧来最大化服务的持续时间,例如。