我正在开发一款Android应用程序,需要在来电屏幕上添加一个按钮。是否可以向现有的来电屏幕添加新按钮,还是应该创建一个特定于我的应用程序的自定义屏幕?
编辑: 我想在出现来电时的屏幕上,除了“接听”和“拒绝”按钮之外再添加一个按钮。
我正在开发一款Android应用程序,需要在来电屏幕上添加一个按钮。是否可以向现有的来电屏幕添加新按钮,还是应该创建一个特定于我的应用程序的自定义屏幕?
编辑: 我想在出现来电时的屏幕上,除了“接听”和“拒绝”按钮之外再添加一个按钮。
可以和不可以。
不可以向现有应用程序添加新按钮。但是,是的,您可以用一个带有所需按钮的应用程序替换该应用程序(在本例中为拨号器)。当用户安装您的应用程序时,他们会选择是否使用您的应用程序或内置的拨号器应用程序来打电话和接电话。
<Button android:id="@+id/helloButton" android:layout_height="wrap_content" android:layout_width="wrap_content" text="Hello Button" />
然后在您的“启动器”活动中,您需要分配一个处理程序来处理点击等操作。
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