在Android中向默认的来电界面添加一个按钮

4

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

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


“incoming call screen” 是什么意思?你是在使用 Eclipse 吗? - pjama
出现带有“接受”和“拒绝”按钮的屏幕。 - user330973
哦,我现在明白了。抱歉,我不熟悉那个。 - pjama
5个回答

3

@guigouz,能否提供一下incomingcallplus的源代码?你在回答中提供的链接里没有这个。我真的需要它。谢谢。 - Aleksandar

3

可以和不可以。

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


1
你可能想要在你的main.xml文件中添加类似以下的内容:
<Button android:id="@+id/helloButton" android:layout_height="wrap_content" android:layout_width="wrap_content" text="Hello Button" />

然后在您的“启动器”活动中,您需要分配一个处理程序来处理点击等操作。


我是新手Android应用程序开发者,如果我没有使用正确的术语,请谅解。如果我将上述按钮代码添加到main.xml中,则该按钮仅在启动我的应用程序时显示。但是,我想将一个按钮添加到现有的Activity,即本机呼入电话屏幕。您能否帮忙告诉我如何做到这一点? - user330973

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


1
如果您想在默认的拨号器屏幕上实现此功能,那么我认为除非禁用拨号器的控件并在拨号器上方放置透明活动,否则不可能实现;用户将能够与您的活动进行交互,并且只能在点击返回按钮后使用拨号器。
您可能需要采用自定义设计。

谢谢你的输入,Ujwal。我想在来电时出现的默认屏幕上执行它,而不是默认的拨号屏幕。 - user330973

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接