从广播接收器后创建一个弹出菜单

时间:2014-04-13 17:18:00

标签: android popup broadcastreceiver

我正在尝试创建一个Android应用程序,在获得未接来电后会显示弹出菜单。 我正在使用BroadcastReceiver收听电话状态,PhoneStateListener检查是否有未接来电,但如何在接到未接来电后提示弹出菜单? :
我尝试使用PopupMenu课程,但我不知道该怎么放入查看参数
我尝试了以下代码,但它没有起作用:

package com.example.contact;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.view.MenuItem;
import android.view.View;
import android.widget.PopupMenu;
import android.widget.Toast;

public class GetText extends BroadcastReceiver {
Context con;
    @Override
    public void onReceive(Context context, Intent arg1) {
        con = context;
        View v = new View(context);
        Toast.makeText(context, "Got The message", Toast.LENGTH_LONG).show();
        PopupMenu popup = new PopupMenu(context,v);
        popup.getMenuInflater().inflate(R.menu.main, popup.getMenu());
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            public boolean onMenuItemClick(MenuItem item) {
                Toast.makeText(con,
                        "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT)
                        .show();
                return true;
            }
        });
    }

}

有谁能告诉我解决这个问题的方法...... 先感谢您

<小时/> 修改 * 对话类: *

import android.app.Activity;
import android.os.Bundle;

public class Dialog extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.popup);
    }


}

在我的清单中:

<activity
            android:name="com.example.contact.Dialog"
            android:theme="@android:style/Theme.Dialog" >
        </activity>

我是以错误的方式做的吗?如果是的话,请纠正我......

1 个答案:

答案 0 :(得分:0)

我做了一些非常类似的收到的短信。而不是PopupMenu,请使用主题为Activity的对话框。

在您的清单中,将以下内容添加到<activity>代码中:

android:theme="@android:style/Theme.Dialog"

然后,在onReceive()方法中,使用Intent启动Activity:

Intent intent = new Intent(context, MenuActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);

这也可以让您更好地控制后续功能。