2011-01-06 4 views
0

私が作成したいのはポップアップスタイルのアプリケーションです。他のアプリの上にあるAndroidのポップアップスタイルのアクティビティ

私はバックグラウンドでサービスを提供しています。何かがキューに到着し、ユーザーに知らせるアクティビティが必要です.SMSPopupアプリケーションの機能と非常によく似ています。

私は何かがキューに到着し、私の活動を呼び出すコードを持っています。

ただし、何らかの理由で、アクティビティがAndroidデバイスのメインデスクトップに表示されるのではなく、最初に開始されたアクティビティの上に常に表示されます。一例として、

私は、アプリケーションが

を実行したとき、私は私がポップアップ活性を有するキュー

をチェックするサービスを持って示されている主な活性を有しています。

メインアクティビティを開始すると、サービスが開始されます。これでこれを閉じることができます。

私は、キューに何かを持って、それはそれの上にポップアップでの主な活動を起動するポップアップアクティビティを作成します。■私はこれをどのように停止しないと私が望む通りに振る舞うが...




public class SMSPopup extends Activity implements OnClickListener{ 

public static String msg; 


@Override 
public void onCreate(Bundle bundle){ 
    super.onCreate(bundle); 
// Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show(); 
    this.setContentView(R.layout.popup); 
    TextView tv = (TextView)findViewById(R.id.txtLbl); 
    Intent intent = getIntent(); 
    if (intent != null){ 
     Bundle bb = intent.getExtras(); 
     if (bb != null){ 
      msg = bb.getString("com.andy.tabletsms.message"); 
     } 
    } 

    if(msg == null){ 
    msg = "LOLOLOL"; 
    } 
    tv.setText(msg); 

    Button b = (Button)findViewById(R.id.closeBtn); 
    b.setOnClickListener(this); 
} 


@Override 
public void onClick(View v) { 
    this.finish(); 
} 
} 




と私はすべて30秒ほど待ち行列をチェックする放送受信機からのアクティビティを呼び出します:ポップアップクラスがある


    if(main.msgs.size()>0){ 

     Intent testActivityIntent = new Intent(context.getApplicationContext(), com.andy.tabletsms.work.SMSPopup.class); 
    testActivityIntent.putExtra("com.andy.tabletsms.message", main.msgs.get(0)); 
    testActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(testActivityIntent); 

     } 

レイアウトはここにある:http://pastebin.com/F25u6wdM

+0

(main.msgs.get(0)のように)「main」とは何ですか、それはどこですか? – Squonk

+0

その文字列を含むarraylist ....問題に実際には関係していません:) – RenegadeAndy

+0

あなたは言う - "...メインアクティビティをポップアップで起動します"主な活動は「本当に」開始されましたか?つまり、BACKボタンを押すと、ポップアップアクティビティが消えてメインアクティビティが表示されます。または、ポップアップアクティビティがメインアクティビティと同じタイトルバーを持つバックグラウンドを持っている場合は、メインアクティビティのように見えますか? – Squonk

答えて

3

これはAndroidによって提案された設計慣行に反します。バックグラウンドサービスがユーザーとの対話を受けるために、独自に活動を開始していないhttp://developer.android.com/guide/topics/ui/notifiers/notifications.html

を参照してください。

メッセージをトーストおよび/または通知で表示することができます。通知から、あなたは新しい意図を開始することができます。

+0

よくアプリケーションがたくさんあります - アプリケーションのために必要な通知のタイプ - それは私自身のためだけです - それで私にとっては最高です! – RenegadeAndy

+0

そして、私が "サービス"と言うのは、マニフェストので定義されたサービスではなく、待ち行列とそのサイズを追跡するものです: – RenegadeAndy

+0

ok。わかった。私はあなたがスレッドを持っていると思う。また、アクティビティが最前線になくてもスレッドを実行したいとします。右?これが正しいとすれば、私はあなたがこれを行うことができればと思いました。コントロールをサービスに転送することをお勧めします(実際のサービス...スレッドではありません)。サービスがウィンドウをポップアップする必要がある場合、通知および/またはトーストを作成することができます。また、(あなたが本当に望むなら)あなたは同じ場所からアクティビティを開始することができます(アンドロイドの推奨に反していますが)。 – GSree

関連する問題