我正在做一个应用程序,我想在设备启动完成时调用一个数字。我的代码是这样的:
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("**inside onRecevier");
Intent serviceIntent = new Intent();
serviceIntent.setAction("com.test.app.TestService");
context.startService(serviceIntent);
}
首先我创建了BroadcastReceiver。我在清单文件中注册了这个接收器,如下所示:
<receiver android:name="TestReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
在接收器中,我调用了以下服务:
public class TestService extends Service{
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
System.out.println("**inside onCreate");
super.onCreate();
Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show();
Intent call = new Intent(Intent.ACTION_CALL,Uri.parse("tel:+5555"));
startActivity(call);
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
System.out.println("**inside onDestroy");
super.onDestroy();
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
System.out.println("**inside onStart");
super.onStart(intent, startId);
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
}
}
当我在启动应用程序后尝试启动设备时强行关闭。在android中怎么做? Thanx提前
答案 0 :(得分:1)
您需要在从服务开始活动之前添加NEW_TASK标志:
Intent call = new Intent(Intent.ACTION_CALL,Uri.parse("tel:+5555"));
call.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(call);
This解释说:
请注意,如果从Activity外部调用此方法 然后,Intent必须包含FLAG_ACTIVITY_NEW_TASK 发射旗帜。这是因为,没有从现有的开始 活动,没有现有任务可以放置新活动 因此需要将它放在自己独立的任务中。
此外,您必须拥有权限:
正如Waqas所说,你最好从onReceive
开始提供服务:
Intent serviceIntent = new Intent(context, TestService.class);
context.startService(serviceIntent);
确保你已经完成了我所说的一切,如果你继续遇到问题,那么如果你编辑你的问题并从强制关闭中粘贴logcat会很有帮助。
答案 1 :(得分:0)
将onReceive更改为此
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("**inside onRecevier");
Intent serviceIntent = new Intent(context, TestService.class);
context.startService(serviceIntent);
}
答案 2 :(得分:0)
有多种原因可以让你获得强制关闭。告诉哪个是查看日志的最佳方法。它应该告诉你究竟抛出了什么异常,并给出一个如何解决问题的提示。