2012-01-13 2 views
0

私はバックグラウンドサービスを使用しているアプリケーションを持っています。明確に実行中です。私のモバイルがオフの場合、私のサービスはオフになります。アプリケーションが起動されるとバックグラウンドサービスのみが評価されます。モバイルはオフに切り替えますか? それは可能ですか? 誰もがコードモバイルがオンになっているときにアンドロイドでアプリケーションを起動するにはどうすればよいですか?

更新ACTION_BOOT_COMPLETEDsee here for details)用

public class loginForm extends Activity 
{ 
@Override protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView (R.layout.login); 
receiver = new ConnectionReceiver(); 
registerReceiver(receiver,new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 
} 
} 

private class ConnectionReceiver extends BroadcastReceiver{ 

     private Timer mTimer; 
     private TimerTask mTimerTask; 

     @Override 
     public void onReceive(Context context, Intent intent) { 
       NetworkInfo info = intent.getParcelableExtra   (ConnectivityManager.EXTRA_NETWORK_INFO); 

       if(null != info) 
       { 
         String state = getNetworkStateString(info.getState()); 
         if(state.equals("Connected")){ 
          mTimer = new Timer(); 
          mTimerTask = new TimerTask() { 
           @Override 
           public void run() { 
            loginForm.this.runOnUiThread(new Runnable() { 

             @Override 
             public void run() { 

              //Toast.makeText(getBaseContext(), "Disenabled provider " + provider, 
                ///Toast.LENGTH_SHORT).show(); 
              try{ 
              insertAllGpsInformation(); 
              } 
              catch(Exception e) 
             { 
              Toast.makeText(getBaseContext(), "Your Net Connected or Not Login to Net"+"", Toast.LENGTH_LONG).show(); 
              Log.e("Upload Picture Error:",e.getMessage()); 
             } 
             } 


            }); 

           } 
          }; 
          mTimer.scheduleAtFixedRate(mTimerTask,180000,180000); 
         } 


         } 
     } 
       } 

} 

答えて

0

登録すると説明します。起動時にサービスを開始します。

+0

receiver = new ConnectionReceiver(); registerReceiver(レシーバ、新しいIntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));このような私のサービスを開始し、私の私のマニフェストファイルです。しかし私のservieはstaretdではありません。 – Mercy

0

BOOT COMPLETEDアクションの意図でブロードキャストレシーバを作成します。

詳細なヘルプについては、以下のリンクを参照してください。

  1. http://blog.gregfiumara.com/?p=82
  2. http://marakana.com/forums/android/examples/60.html

あなたは

public class BootReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     // TODO Auto-generated method stub 
     Log.i("BootReceiver :: Start Booting.."); 

     Intent i = new Intent(context, StartService.class); // Start your service class 
      i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(i);  
    } 
    } 

を使用して

としてのAndroidManifest.xmlでbroadcastrecieverを使用することができます
<receiver android:name=".receiver.BootReceiver"> 
<intent-filter> 
<action android:name="android.intent.action.BOOT_COMPLETED" /> 
</intent-filter> 
</receiver> 
+0

受信者=新しいConnectionReceiver(); registerReceiver(受信者、新しいIntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); \t <意図フィルタ> \t \t <アクションアンドロイド:名= "android.intent.action.BOOT_COMPLETED"> \t \t \t \t:このような私のサービスと私の開始 \t \t \t私のマニフェストファイルです。しかし私のservieはstaretdではありません。 – Mercy

+0

ここで、あなたはホームにstartserviceの目的を入れてどこにサービスを開始していますか?コードを入れてください。 – jenuine

+0

私は私のコードを更新します – Mercy

関連する問題