0

デバイスの起動時にアプリケーションを起動しようとしています。

私のコードは次のとおりです

1- 最初に、mysql データベースにデータを送信するバックグラウンド スレッド (asynctask) を含むメイン クラス。

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- Android マニフェスト ファイル

<?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>

ブート時に開始しようとする前に、主な方法は正しく機能しています。また、起動時にAndroidエラーを無視した後もアプリは動作しています(アプリが閉じられました)

ログで猫はクラスが見つからないという例外を取得しています

助けていただけますか?

4

2 に答える 2

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;
}
于 2013-09-24T14:05:31.243 に答える
0

マニフェストでパッケージを割り当てました: com.example.gpstracking. 次に、.BootUpReceiver を定義します。システムは、com.example.gpstracking.BootUpReceiver でクラスを見つけることを期待する必要があります。

パッケージ .BootUpReceiver をフルパス com.seven.ex.helper.BootUpReceiver に変更してみてください。私が知る限り、これは com.seven.ex.AndroidGPSTrackingActivity である必要があるため、同じことが AndroidGPSTrackingActivity にも当てはまります。

于 2013-09-24T13:52:10.357 に答える