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

InformationsquelleAutor Alok Agarwal | 2013-08-18
Schreibe einen Kommentar