1

このコードを使用して、サービスからアクティビティを動的に作成します。

マニフェスト:

<activity android:name="ServiceDialog" android:label="" android:theme="@android:style/Theme.Dialog" />

活動クラス:

public class ServiceDialog extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent=getIntent();
        String text = "";
        if(intent.hasExtra("text")) text = intent.getStringExtra("text");

        AlertDialog.Builder alert = new AlertDialog.Builder(this);
        alert.setTitle("Alert");
        alert.setIcon(android.R.drawable.ic_dialog_info);
        alert.setMessage(text);
        alert.setPositiveButton(android.R.string.ok,
                new OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        ServiceDialog.this.finish();
                    }
                });
        alert.setOnCancelListener(new OnCancelListener() {
            @Override
            public void onCancel(DialogInterface arg0) {
                ServiceDialog.this.finish();
            }
        });
        alert.show();
    }

}

活動の作成:

Intent intent = new Intent("android.intent.action.MAIN");
intent.setClass(this, ServiceDialog.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("text", "Hello!");
startActivity(intent);

しかし、問題があります。このアクティビティがタスク マネージャーに表示されません ([ホーム] ボタンを押すと、アクティビティを再度開くことができません)。修正するにはどうすればよいですか?

4

1 に答える 1

0

代わりにこのコードを使用してアクティビティを開始してください。

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.putExtra("text", "Hello!");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(new ComponentName("com.package.address","com.package.address.MainActivity"));
startActivity(intent);
于 2012-08-30T12:55:03.843 に答える