2010-12-03 26 views
7

quiero Emergente de diálogo en un momento específico en cualquier aplicación de mi código:ventana emergente en cualquier aplicación

public class testPOPDialog extends Activity { 
/** Called when the activity is first created. */ 
private Handler mHandler = new Handler(); 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    mHandler.postDelayed(mUpdateTimeTask, 1000); 



} 
private Runnable mUpdateTimeTask = new Runnable() { 
     public void run() { 
      AlertDialog d = new AlertDialog.Builder(testPOPDialog.this) 
      .setTitle("tanchulai") 
      .setMessage("bucuo de tanchulai") 

      .create(); 

     d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
     d.show();  
     } 
    }; 

} 

me da

12-03 10:12:18.162: ERROR/AndroidRuntime(571): android.view.WindowManager$BadTokenException: Unable to add window [email protected] -- permission denied for this window type 

lo que es este permiso si elimino d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); mi la aplicación es correcta .....

Respuesta

14

Añadir este permiso a su manifiesta:

android.permission.SYSTEM_ALERT_WINDOW 
+0

hey, eres increíble, funciona ... – Piyush

+0

muchas gracias por tu respuesta – pengwang

+0

Golden knowledge. – Salim

0

intente esto en su archivo de identificación con la actividad que desea mostrar como emergente .-- >> android: theme = "@ android: style/Theme.Dialog"

+0

gracias por su respuesta, mi pregunta se quiere hacer estallar de diálogo No importa qué programas se ejecutan, como una aplicación de Reloj. cuando el c tiempo ha llegado. Puede abrir un cuadro de diálogo – pengwang

1

Ante todo gracias a Mathias Lin

Soy nuevo en Android así que era difícil para mí al conjunto de permisos sabiendo de respuesta Mathias Lin 's. Porque no sabía cómo establecer el permiso y en qué parte del archivo de manifiesto.

Finalmente lo hice por ayuda de la respuesta Mathias Lin. Así que hice la respuesta detallada.


En el uso de archivos mainfest

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 

después

<uses-sdk 
    android:minSdkVersion=... 
    android:targetSdkVersion=... /> 

como

<uses-sdk 
    android:minSdkVersion="7" 
    android:targetSdkVersion="16" /> 
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 
Cuestiones relacionadas