2013-09-24 212 views
0

即时尝试启动设备启动时的应用程序。启动在设备启动时启动活动的服务

我的代码作为跟随

1-首先是包含一个后台线程(的AsyncTask),其将数据发送到一个MySQL数据库的主类。

2- Service类

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的错误日志猫正在逐渐未发现异常

可以请你帮一个类?

+0

代码无法找到服务或AndroidGPSTrackingActivity类吗? – cYrixmorten

+0

当我启动模拟器时出现强制关闭错误。那么如果我通过点击图标打开应用程序,它就可以顺利运行。 logcat不显示任何东西,直到我通过点击图标打开应用程序 – Seven

+0

我明白,但你写“在日志猫得到一个类没有发现异常”,我想知道它无法找到什么类。 – cYrixmorten

回答

0

在你的清单中你已经指定了包:com.example.gpstracking。当你定义.BootUpReceiver。系统应该期望在com.example.gpstracking.BootUpReceiver中定位该类。

请尝试将包.BootUpReceiver更改为完整路径com.seven.ex.helper.BootUpReceiver。据我所知,这应该是com.seven.ex.AndroidGPSTrackingActivity同样适用于AndroidGPSTrackingActivity。

+0

复制粘贴是ab **** – bofredo

+0

@bofredo idd可以:)尤其是在XML等 - 没有编译器或皮棉来拯救你。在这种情况下,无论如何... – cYrixmorten

+0

它的工作原理...谢谢..我下载了一个简单的源代码,它读取GPS数据并开始工作,然后我重构(重命名)包名称,我认为日食会改变即使在清单文件中,它的名字也是无处不在,但它没有。非常感谢你 ;我会接受你的答案@cYrixmorten – Seven

1

您的服务不会像现在这样工作。你将不得不从onStart()移动到onStartCommand(),然后返回该服务是否粘滞。问题在于onStart()方法很有可能根本没有被调用(因为它现在被deprectaed了)。

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

     //do your stuff here 

    return Service.START_NOT_STICKY; 
}