2010-04-24 13 views
10

Bir Android uygulaması yazıyorum ve bir kullanıcı tam uygulama içine atlamadan bir metin girebilmeniz için bir iletişim kutusu veya ana ekranın üzerinden görüntülemek istiyorum. Bunu işe almak için görünmüyor olabilir. Bir diyaloğu (şeffaf bir aktivitede bile) gösterirseniz, başvurum başlatılır.Bunu nasıl yapıyorlar? Ana ekran üzerinde iletişim kutuları

Ne hakkında konuştuğumu bilmiyorsanız, Facebook widget'ına bakın. Benzer bir davranışı "Aklınızda neler var?" Ifadesine tıklamak istiyorum. Kutu.

Yardımlarınız için şimdiden teşekkür ederiz!

-Brian

+0

"Ben (hatta saydam bir etkinlikte) bir iletişim sunmak durumunda, başvurum başlattı." Bazı code' olduğunu Bu size ne ifade ediyor? Bana göre, bir "uygulama" başlayacak * olacak *, aksi takdirde kodunuz çalışmayacak. – CommonsWare

cevap

10

Benim sorunum uygulaması her zaman iletişim kutusunu görüntülemek için başlatılan oldu bir cevap olmalıdır biliyorum.

Bunu çözmek için bildirimde etkinlik lauch modunu singleInstance olarak ayarlıyorum. Şimdi ana ekran üzerinde diyaloğu gösterir! Aşağıda bu

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
this.getApplicationContext().startActivity(intent); 

için

+0

Bu işe yaradı, işe yaradı, 6 ve 6'da bir hata yapıyor, (evet, bunun bir soru olduğunu gördüm, ama google doent care ...). Kendi uygulamanızı "Son Ekranlar" da (özellikle de excludeFromRecents'i de kullanıyorsanız) etkinleştirmek için 'documentLaunchMode' özelliğini kullanmanız gerekir. – Remy

7

Onlar olan bir etkinlik başlatarak, ancak bir Diyaloğu benziyor böylece etkinliğin teması kurdum. Ben Theme.Dialog

<activity android:name=".language" 
      android:label="@string/app_name" 
      android:theme="@android:style/Theme.Dialog"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
    </activity> 

ile çalıştı Ama kodunda, 2, orada android:theme="@android:style/Theme.Dialog"

+0

Teşekkürler, ancak uygulama widget'ımdan nasıl bir etkinlik başlatırım? Bekleyen niyetleri anlayamıyorum. Teşekkürler! –

3

Çok teşekkürler: Bildiriminize olarak

, sen <activity> etiketi altında böyle bir şey eklemek zorunda farklı yüzer pencereler: benim düzen ve kiremit.

import android.app.Activity; 
import android.os.Bundle; 
import android.content.Intent; 
import android.app.Dialog; 

public class language extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // setContentView(R.layout.main); 
     Dialog dialog = new Dialog(this); 
     dialog.setContentView(R.layout.main); 
     dialog.setTitle("Raygional"); 
     dialog.show(); 

    } 
} 

PS: İşte şu kodu Bunun bir soru yerine

+4

o zaman neden bir cevap olarak yayınladınız? –

+1

Ana ekran üzerinde bir Dialog yapmak isteyen başkaları da ilgisini çekebilir. –

0

Kullanım Servis

public class HomepopupDataService extends Service { 

private static final String TAG = "HomepopupDataService"; 

@Override 
public void onCreate() { 
    Log.i(TAG, "Service onCreate"); 
} 


@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    // TODO Auto-generated method stub 
    Log.i(TAG, "Service onStartCommand"); 

    CountDownTimer dlgCountDown; 
    Log.e("---------------", "onHandleIntent"); 
    dlgCountDown = new CountDownTimer(10000, 1000) { 
     public void onTick(long millisUntilFinished) { 
      Log.e("---------------", "onHandleIntent++"); 
     } 

     public void onFinish() { 
      Intent i = new Intent(getApplicationContext(), 
        DialogActivity.class); 

      i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      getApplicationContext().startActivity(i); 
     } 
    }.start(); 
    return super.onStartCommand(intent, flags, startId); 
} 

@Override 
public IBinder onBind(Intent arg0) { 
    // TODO Auto-generated method stub 
    Log.i(TAG, "Service onBind"); 
    return null; 
} 

@Override 
public void onDestroy() { 
    Log.i(TAG, "Service onDestroy"); 
} 

}