我是想在接受到短信以后就显示一个AlertDialog
public class ReceiverDemo extends BroadcastReceiver {

private static final String strRes = "android.provider.Telephony.SMS_RECEIVED";

@Override
public void onReceive(Context context, Intent intent) {
              Log.i("JSY", "1");
              new AlertDialog.Builder(context)       
      .setTitle(R.string.app_about)       
      .setIcon(R.drawable.icon)        
      .setMessage(R.string.warning)
      .setPositiveButton(R.string.str_ok,
new DialogInterface.OnClickListener()
{
 public void onClick(DialogInterface dialoginterface, int i)
 {  
// mMediaPlayer01.stop();
}
}).setNegativeButton(R.string.str_no,
new DialogInterface.OnClickListener()
{        public void onClick(DialogInterface dialoginterface, int i)   
{
}
      
 }) .show();
       }代码如上,错误信息如下:

解决方案 »

  1. 短信接收权限已经注册过了,AlertDialog
    也要注册吗
      

  2. 只有activity才能创建Dialog的但你可以在广播内调用一个类似Dialog的Activity,用context.startActivity(it);
      


  3. 再注册个Activity就可以啦 对应的activity标签内加属性android:theme="@android:style/Theme.Dialog"定义成Dialog的风格,其他都和调用一般的Activity一样
    Intent it=new Intent(context,DialogActivity.class);
    context.startActivity(it);
      

  4. 我在manifest里面添加
    <activity android:name=".dailog"
                      android:label="@string/app_name"
                      android:theme="@android:style/Theme.Dialog">                        
            </activity>
    R.java里还是没有生成id,这是怎么回事啊。
      

  5. 这个不会生成id的 注册之后直接用就对了 都不用id
      

  6. 还在吗package jsy.home;import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.Dialog;
    import android.content.DialogInterface;
    import android.util.Log;public class Dailog extends Activity {
    @Override
    protected Dialog onCreateDialog(int id) {
    // TODO Auto-generated method stub
    Log.i("JSY", "3");
    switch(id)
    {
     case 1:  
    return new AlertDialog.Builder(this)       
          .setTitle(R.string.app_about)       
          .setIcon(R.drawable.icon)        
          .setMessage(R.string.warning)
          .setPositiveButton(R.string.str_ok,
    new DialogInterface.OnClickListener()
    {
         public void onClick(DialogInterface dialoginterface, int i)
         {  
         // mMediaPlayer01.stop();
         }
    }).create();


     default:  
              return null;  
    }
    }}
    调用是这样的@Override
    public void onReceive(Context context, Intent intent) {
    Log.i("JSY", "1");
    Intent it=new Intent(context,Dailog.class);
    Log.i("JSY", "2");
    context.startActivity(it);
    Log.i("JSY", "5");
    }
    start不了
      

  7. 按提示上面还要加
     Intent it=new Intent(context,Dailog.class);
     it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(it);
      

  8. 看输出的Caused by:**********,会提示你具体的错误,多看就知道了。
      

类似问题 »