2013-09-24 2 views
0

im пытается запустить приложение при загрузке устройства.Запуск службы, которая запускает активность при загрузке устройства

мой код, как следовать

1- Во-первых, основной класс, который содержит фоновый поток (AsyncTask), которые посылают данные в базу данных MySQL.

2- Класс обслуживания

package com.seven.ex.helper; 

import com.seven.ex.AndroidGPSTrackingActivity; 

import android.app.Service; 
import android.content.Intent; 
import android.os.IBinder; 
import android.util.Log; 
import android.widget.Toast; 

public class service extends Service { 
private static final String TAG = "MyService"; 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 
public void onDestroy() { 
    Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show(); 
    Log.d(TAG, "onDestroy"); 
} 

@Override 
public void onStart(Intent intent, int startid) 
{ 
    Intent intents = new Intent(getBaseContext(),AndroidGPSTrackingActivity.class); 
    intents.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intents); 
    Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show(); 
    Log.d(TAG, "onStart"); 
} 
}  

3- класс BootUpReceiver

package com.seven.ex.helper; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class BootUpReceiver extends BroadcastReceiver{ 

@Override 
public void onReceive(Context arg0, Intent arg1) { 
    Intent intent = new Intent(arg0,service.class); 
    arg0.startService(intent); 
    Log.i("Autostart", "started"); 
} 

} 

4- андроид файл манифеста

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.gpstracking" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk android:minSdkVersion="8" /> 

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 




    <application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name="com.seven.gpstracking.AndroidGPSTrackingActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 


    <service android:name=".service" 
       android:label="@string/app_name" 
       > 
    </service> 

    <receiver android:enabled="true" android:name=".BootUpReceiver"> 

    <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
    </receiver>   

    </application> 


    </manifest> 

Основной метод работает правильно, прежде чем я пытался начать он на ботинке. Кроме того, приложение все еще работает после того, как я игнорировать андроид ошибки при загрузке (Приложение Closed)

в журнале кошке подводит класс не найдено исключение

пожалуйста, вы можете помочь?

+0

Не удается ли найти код службы или класс AndroidGPSTrackingActivity? – cYrixmorten

+0

, когда я загружаю эмулятор, появляется сообщение об ошибке принудительной связи. то, если я открою приложение, щелкнув значок, он будет работать плавно. logcat ничего не показывает, пока я не открыл приложение, нажав на значок – Seven

+0

. Я понимаю, но вы пишете «в журнале cat am get class not found exception», и я хотел бы знать, какой класс он не может найти. – cYrixmorten

ответ

0

В манифесте вы назначили пакет: com.example.gpstracking. Когда u затем определите .BootUpReceiver. Система должна ожидать найти класс в com.example.gpstracking.BootUpReceiver.

Попробуйте изменить пакет .BootUpReceiver на полный путь com.seven.ex.helper.BootUpReceiver. То же самое касается AndroidGPSTrackingActivity, поскольку это должно быть com.seven.ex.AndroidGPSTrackingActivity, насколько я могу судить.

+0

copy & paste is ab **** – bofredo

+0

@bofredo idd может быть :) особенно в xml и т. П. - нет компилятора или строки, чтобы сохранить вас. Не в таких случаях, как это так или иначе ... – cYrixmorten

+0

это работает ... спасибо .. Я загрузил простой исходный код, который считывает данные gps и начинает работать над ним, затем я рефакторизую (переименовываю) имя пакета, и я думал, что eclipse изменится имя везде, даже в файле манифеста, но это не так. Большое спасибо ; я приму ваш ответ @cYrixmorten – Seven

1

Ваша Служба не будет работать так, как сейчас. Вам нужно будет перенести материал из onStart() в onStartCommand(), а затем вернуть, является ли служба липкой или нет. Проблема в том, что метод onStart() имеет хорошие шансы вообще не называться (поскольку он сейчас отступил).

@Override 
public int onStartCommand(final Intent intent, final int flags, final int startId) { 

     //do your stuff here 

    return Service.START_NOT_STICKY; 
} 
Смежные вопросы