2011-03-11 62 views
3

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

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

+0

你所说的“呼入电话屏幕”的意思。你在Eclipse中工作吗? – pjama 2011-03-12 01:22:12

+0

与答案和拒绝按钮一起出现的屏幕。 – user330973 2011-03-14 20:45:46

+0

哦,我现在明白了。对不起,我不熟悉这一点。 – pjama 2011-03-15 18:56:00

回答

1

你可能想添加类似以下到您的main.xml:

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

然后在你的“启动”的活动,你需要指定一个处理程序来处理点击等

+0

感谢您的回复!我会试试这个。 – user330973 2011-03-12 03:40:06

+0

我是新来android应用程序开发,所以请原谅,如果我不使用正确的术语。如果我将上面的按钮代码添加到main.xml中,该按钮仅在我的应用程序启动时出现。但是,我想将按钮添加到现有的活动,即本机来电屏幕。你能帮我怎么做吗? – user330973 2011-03-14 20:51:20

1

如果你想在默认的拨号程序屏幕上做到这一点,那么我不认为这是可能的,不禁止拨号程序的控制和透过拨号程序的透明活动;用户将能够与您的活动进行交互,并且只能使用拨号程序点击后退按钮。

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

+0

感谢您输入Ujwal。我希望在有来电时显示的默认屏幕上执行此操作,而不是默认的拨号程序屏幕。 – user330973 2011-03-14 20:46:43

3

我一直在寻找同样的funcionality,发现这个开源项目,http://code.google.com/p/incomingcallplus/

还没有发挥它呢,但似乎你在寻找什么。

+0

我可以在哪里下载这个应用程序的代码? – Erez 2012-10-11 15:28:14

+0

@guigouz你能否提供一个incomingcallplus的源代码?它在您的答案链接中不可用。我真的需要它。谢谢 – Aleksandar 2015-05-04 23:31:56

3

Yes和No.

不,你不能添加一个新的按钮到现有的应用程序。但是,您可以替换该应用程序(在这种情况下,拨号程序)与一个有你想要的按钮。当用户安装您的应用程序时,他们会选择是否要使用您的应用程序或内置拨号程序拨打和接听电话。

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清单档案中的