1

ステータス通知アイコンのクリックから開始したいアクティビティを持つアプリケーションを構築しました。私がしたいのは、デバイスで既に開いているアプリケーションの上にダイアログボックスとして表示されるように設定したアクティビティです。

しかし、通知アイコンがクリックされると、ダイアログ アクティビティが起動され、その下にあるアプリケーションのメイン アクティビティが次の図のように起動されます。

http://postimage.org/image/s40v1588b/

ダイアログ ボックスを起動して、画面上の現在のアプリケーションの上に表示され、メイン アクティビティが起動されないようにするにはどうすればよいですか?

主な活動:

public class mainActivity extends Activity {
    public  NotificationManager mNotificationManager;
    private Button start;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        start = (Button) findViewById(R.id.start);
        start.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Intent myIntent = new Intent(getApplicationContext(), servicetest.class);
                startService(myIntent);
                Log.d("start","sms");
                Toast.makeText(SmseverywhereActivity.this, "Service Started",
                        Toast.LENGTH_LONG).show();
            }

        });

    }

}

通知プレスをリッスンし、ダイアログ アクティビティを開始するサービス:

    public class servicetest extends Service{
        public  NotificationManager mNotificationManager;
        public Intent dialogIntent;

        @Override
        public IBinder onBind(Intent intent) {
            // TODO Auto-generated method stub
            return null;
        }
        @Override
        public void onCreate() {
            super.onCreate();
            Log.d("servicetest","onCreate");
            mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            showNotification();


            }


         private void showNotification(){
                Notification not = new Notification(R.drawable.ic_launcher, "Application started", System.currentTimeMillis());
                Intent myIntent = new Intent(this, dialogactivity.class);
                myIntent.putExtra("isFullScreen", true);
                myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                PendingIntent contentIntent = PendingIntent.getActivity(this, 0, myIntent, Notification.FLAG_ONGOING_EVENT);        
                not.flags = Notification.FLAG_ONGOING_EVENT;            
                not.setLatestEventInfo(this, "Application Name", "Application Description", contentIntent);
                mNotificationManager.notify(1, not);
            }



    }

Dialog activity:
public class dialogactivity extends Activity{
     @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
            setContentView(R.layout.dialogtest);

     }
}

マニフェスト:

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".SmseverywhereActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:label="@string/app_name"
            android:name="NewText"
            android:theme="@android:style/Theme.Dialog"
            android:launchMode="singleTask"
            android:screenOrientation="user">
        </activity>

        <service android:enabled="true" android:name=".servicetest" />
4

1 に答える 1

0

finish();他のアクティビティが開始されるたびに再起動されないように、メインのアクティビティから呼び出す必要がありました。

于 2012-08-16T19:32:27.233 に答える