2012-01-17 18 views
0

デバイス起動時に電話をかけたいアプリケーションを実行しています。私のコードは次のようなものです:デバイス起動時にサービスを開始します

@Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     System.out.println("**inside onRecevier"); 

     Intent serviceIntent = new Intent(); 
     serviceIntent.setAction("com.test.app.TestService"); 
     context.startService(serviceIntent); 

    } 

最初に私はBroadcastReceiverを作成しました。私は力の近くを取得するアプリケーションを起動後にデバイスを起動しようとしたとき

public class TestService extends Service{ 

    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     // TODO Auto-generated method stub 

     System.out.println("**inside onCreate"); 
     super.onCreate(); 
     Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show(); 
     Intent call = new Intent(Intent.ACTION_CALL,Uri.parse("tel:+5555")); 
     startActivity(call); 
    } 

    @Override 
    public void onDestroy() { 
     // TODO Auto-generated method stub 

     System.out.println("**inside onDestroy"); 
     super.onDestroy(); 
     Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public void onStart(Intent intent, int startId) { 
     // TODO Auto-generated method stub 
     System.out.println("**inside onStart"); 
     super.onStart(intent, startId); 
     Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); 
    } 

} 

:私は、以下のサービスを呼び出し受信機で

<receiver android:name="TestReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <category android:name="android.intent.category.HOME" /> 
     </intent-filter>  
    </receiver> 

:私はこのようなマニフェストファイル内でこのレシーバを登録しました。どのようにアンドロイドでこれを行うには?事前

で ありがとうを
+1

例外の説明とスタックトレースを送信してください。 – Ash

答えて

1

あなたがサービスから活動を開始する前にNEW_TASKフラグを追加する必要があります。

Intent call = new Intent(Intent.ACTION_CALL,Uri.parse("tel:+5555")); 
call.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(call); 

Thisは説明する:もしこの方法は、活動の外部から呼び出されていることを

注 コンテキストインテントには、FLAG_ACTIVITY_NEW_TASK 起動フラグが含まれている必要があります。これは、既存の アクティビティから開始されることなく、新しいアクティビティを配置する既存のタスクがないため、別のタスクに配置する必要があるためです。

また、あなたが権限をもっている必要があります。

そしてWaqasが述べたようにあなたのようなあなたのonReceiveから、あなたのサービスを開始するために、それが良いだろう:

Intent serviceIntent = new Intent(context, TestService.class); 
context.startService(serviceIntent); 

私が述べたことをすべて実行したことを確認してください。引き続き問題がある場合は、質問を編集して強制終了してlogcatを貼り付けると役立ちます。

0

変更は、この

@Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     System.out.println("**inside onRecevier"); 

     Intent serviceIntent = new Intent(context, TestService.class); 
     context.startService(serviceIntent); 

    } 
0

にごonReceiveあなたはフォース閉じるを取得したい理由はさまざまあります。ログを見るのが最善の方法です。どの例外がスローされているのかを正確に伝え、問題の解決方法のヒントを与えるべきです。

+0

これは実際の回答ではなく、質問にコメントとして投稿する必要があります。 – Jakar

関連する問題