zu Beginn meines Dienstes auf dem Handy starten in android
Ich mache app, die tracks Standort der Benutzer kontinuierlich, so weit ich in der Lage gewesen, einen erfolgreichen Empfang von dessen ordinate Speicherort ändern, aber wenn er das Telefon neu zu starten, als ich bin nicht in der Lage, meine Dienstleistung, ohne dass der Benutzer erneut, die app zu öffnen.
-
Manifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.aa.gpsdemo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.aa.gpsdemo.MainActivity" 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=".MyService" android:label="My Service"> <intent-filter> <action android:name="com.aa.gpsdemo.StartMyServiceAtBootReciever" /> </intent-filter> </service> <receiver android:name=".receiver.StartMyServiceAtBootReceiver" android:enabled="true" android:exported="true" android:label="StartMyServiceAtBootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application> </manifest>
-
StartMyServiceAtBootReciever.java
package com.aa.gpsdemo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class StartMyServiceAtBootReciever extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) { Intent serviceIntent = new Intent("com.aa.gpsdemo.BackgroundService"); context.startService(serviceIntent); } } }
-
BackgroundService.java
package com.aa.gpsdemo; import android.app.Service; import android.content.Intent; import android.content.Context; import android.os.IBinder; import android.location.LocationManager; import android.os.Bundle; import android.os.StrictMode; import android.util.Log; import android.widget.Toast; import android.location.Criteria; public class BackgroundService extends Service { private static NewLocationListener mylistner=null; private final static String TAG = "MainActivity"; private Context context = null; @Override public IBinder onBind(Intent arg0) { //TODO Auto-generated method stub return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); } mylistner = new NewLocationListener(context); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setPowerRequirement(Criteria.POWER_MEDIUM); criteria.setCostAllowed(true); LocationManager locManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); String bestProvider=locManager.getBestProvider(criteria, true); locManager.requestLocationUpdates(bestProvider,1000, 5, mylistner); } }
wohin ich gehe falsch, jede Hilfe wäre sehr geschätzt, beim Neustart des Handy bekomme ich demoapp aufgehört hat, habe ich versucht, dass toast auf reciever aber, dass toast auch nicht kommen derzeit
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stellen Sie Sicher, u haben die Erlaubnis in der AndroidManifest-Datei :
Ändern :
RECEIVE_BOOT_COMPLETED: Broadcast-Aktion: Das ist die Sendung einmal, nachdem das system den Bootvorgang beendet hat. Es kann verwendet werden, um Anwendungs-spezifische Initialisierung, wie die Installation von Alarmanlagen. Sie müssen halten Sie die RECEIVE_BOOT_COMPLETED Erlaubnis zu erhalten, diese Sendung.
Refrence
Stackoverflow-Frage