在Android中的默认来电屏幕上添加按钮

时间:2011-03-11 23:30:52

标签: android

我正在开发Android应用,我需要在来电屏幕上添加一个按钮。是否可以在现有的来电屏幕上添加新按钮,还是应该创建特定于我的应用的自定义屏幕?

编辑: 我想在有来电时屏幕上的“接听”和“拒绝”按钮之外添加一个按钮。

5 个答案:

答案 0 :(得分:3)

我一直在寻找相同的功能,并找到了这个开源项目http://code.google.com/p/incomingcallplus/

还没玩过它,但似乎正在寻找你正在寻找的东西。

答案 1 :(得分:3)

是和否。

不,您无法向现有应用添加新按钮。但是,您可以替换该应用程序(在本例中为拨号程序),并使用您想要的按钮。当用户安装您的应用时,他们会选择是否要使用您的应用或内置拨号应用来拨打和接听电话。

答案 2 :(得分:1)

您可能希望在main.xml中添加以下内容:

<Button android:id="@+id/helloButton" android:layout_height="wrap_content" android:layout_width="wrap_content" text="Hello Button" />

然后在“启动器”活动中,您需要指定一个处理点击等的处理程序。

答案 3 :(得分:1)

如果您想在默认拨号程序屏幕上执行此操作,那么我认为如果不禁用拨号程序的控件并使您对拨号程序进行透明活动,我认为这是不可能的;用户将能够与您的活动进行交互,并且只能在单击后退按钮时使用拨号器。

您可能想要使用自定义设计。

答案 4 :(得分:1)

public void addInvitePopup(final String number,Context c){
    //check if pref is ok with invite in call
   // if(!Preferences.getInstance(c.getInviteInCall())){return ; }
    // sets the WindowManager
    WindowManager wm = (WindowManager) c.getSystemService(Context.WINDOW_SERVICE);

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT | 
            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);
    params.x = 250;
    params.height = LayoutParams.WRAP_CONTENT;
    params.width = LayoutParams.WRAP_CONTENT;
    params.format = PixelFormat.TRANSLUCENT;
     final Context ct =c;

    params.gravity = Gravity.TOP;
    params.setTitle("Testing");

    LinearLayout ly = new LinearLayout(c);
    ly.setOrientation(LinearLayout.VERTICAL);

    Button inviteButton = new Button(c);
    inviteButton.setClickable(true);
    inviteButton.setBackgroundDrawable(c.getResources().getDrawable(R.drawable.icon));
    inviteButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(v.getContext(), "adding to blacklist..", Toast.LENGTH_LONG).show();
            v.setBackgroundDrawable(ct.getResources().getDrawable(R.drawable.images));
            v.setClickable(false);
           // sendMessage(v, number);

            //Track this event:
            //MixPanelTracking.setPropKeyValue(getApplicationContext(), null, null, "Add friend - During Call");
        }
    });

也不要忘记在清单文件中添加权限:android.permission.SYSTEM_ALERT_WINDOW