0

私はアンドロイドを初めて使用します.私は自分のアプリ内にサービスを書きました..私は自分のアプリをインストールしています(起動していません)..この時点で、私のサービスは実行を開始し、UI を開く必要があります..これを行う方法

4

4 に答える 4

1

アプリケーションのインストール後に UI やサービスを開始することはできませんが、インテント アクションをリッスンすることはできます。そして、ブロードキャスト レシーバーから必要なものを開始します。

PHONE_STAT_CHANGE、メッセージの受信、SCREEN UNLOCK などの 1 つのアクションでレシーバーをマニフェストに登録する必要があります。アプリでリッスンして、必要なものを開始できるインテントはたくさんあります。

PS:- デベロッパー サイトでのアクション名の検索が正しくありません

于 2012-07-30T04:59:14.403 に答える
0

Deepakブロードキャストレシーバーをアクティブにする基準を指定することにより、ブロードキャストレシーバーでサービスを開始できます。ブロードキャストレシーバーをメニフェストで宣言できます

<receiver android:name=".BroadCast"
              android:enabled="false"> 
            <intent-filter> 
                <action android:name=
                    "android.intent.action.PHONE_STATE" /> 
            </intent-filter> 
        </receiver>

電話がかかってくると起動する

そして、あなたのサービスを次のように呼び出すことができます

public class BroadCast extends BroadcastReceiver{
    Context context = null;
    @Override
    public void onReceive(Context context, Intent intent) 
    {

            Intent dndService = new Intent(context,
                    ContactService.class);
            dndService.putExtra("phone_nr", number);
            context.startService(dndService);
        }
    } 

電話が鳴ると、ブロードキャストレシーバーがアクティブになり、サービスを起動し、サービスから次のようなアクティビティを起動できます

public class ServiceExample extends IntentService {



    public ServiceExample () {
        super("ServiceExample ");
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // TODO Auto-generated method stub

        Intent.intent = new Intent(this , Example.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent );

}
}  

アクティビティをキャンセルする前にこの行を追加する必要があります。そうしないと、クラッシュが発生します

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
于 2012-07-30T05:42:48.820 に答える
0

いいえ、これは不可能です。を起動する前に、ユーザーは自分でアプリケーションを明示的に起動する必要がありますService。ごめん。

于 2012-07-30T04:33:36.680 に答える