안녕하세요 저는 활동을 사용하는 서비스 응용 프로그램을 개발했으며 2.2 and 2.3 android 버전에서 훌륭하게 작동합니다. 부팅시 시작되어 30 분 동안 내 응용 프로그램을 실행하고 서버에 위치를 전송하지만 4.0에서는 응용 프로그램이 서비스에서 실행되지 않습니다. 부팅시 아무도 나에게 이유를 말할 수 있습니까?4.0에서 서비스를 실행하는 방법은 무엇입니까?
내 코드 :
BroadcastReceiver.java :
public class autostart extends BroadcastReceiver {
public void onReceive(Context arg0, Intent arg1) {
if ("android.intent.action.BOOT_COMPLETED".equals(arg1.getAction())) {
Intent intent = new Intent(arg0, gps_back_process.class);
arg0.startService(intent);
Log.i("Autostart", "started");
}
}
}
service.java :
public class gps_back_process extends Service
{
private static final String TAG = "MyService";
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Log.d("Testing", "Service got created");
Toast.makeText(this, "gps_back_process,onCreate();", Toast.LENGTH_LONG).show();
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
@Override
public void onStart(Intent intent, int startid)
{
Intent intents = new Intent(getBaseContext(),MainActivity.class);
intents.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intents);
Toast.makeText(this, "gps_back_process.onCreate();", Toast.LENGTH_LONG).show();
Log.d(TAG, "onStart");
}
}
매니페스트 :
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<receiver android:name=".autostart" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<activity android:name=".MainActivity" >
</activity>
<service
android:name=".gps_back_process"
android:enabled="true" />
</application>
당신을 감사합니다. 이 권한이없는 경우
내 서비스가 내 서비스를 구현하는 장치에 설치 한 후 내 서비스를 실행하는 방법을 말해 줄 수 있습니까? –
활동이있는 경우 활동'onCreate()'에서 서비스를 시작할 수 있지만 3.1 이상에서는 응용 프로그램 설치시 서비스를 시작할 수 없습니다. –
감사합니다. onCreate() 메소드는 3.1 이하에서 작동합니다. –