根据权限禁用Android按钮

时间:2012-12-28 02:42:31

标签: java android

我有一个使用权限“ CALL_PHONE ”的Android应用。这个简单的应用程序只包含一个按钮,可以使用调用意图来调用特定的数字。我想在平板电脑和手机上安装此应用程序,但是当它安装在平板电脑上时,我希望在运行时禁用该按钮,以便当用户尝试使用没有通话功能的平板电脑进行呼叫时,不会显示错误。

目前,我在setEnabled()中使用setClickable()MainActivity.java方法,并在用户第一次点击按钮时将其设置为false。我的问题是,在运行时或首次打开应用程序时(平板电脑中)是否可以禁用按钮并更改文本,因此用户无需先单击按钮即可显示“调用” “按钮应该被禁用且不可点击?

3 个答案:

答案 0 :(得分:2)

请参阅this

这将有助于您确定您的应用程序是否在平板电脑上运行。现在至于禁用你的按钮,我建议像这样:

onCreate()
{
     setContentView(R.layout.main);
     boolean isTablet = checkDevice();
     callBtn = (Button) findViewById(R.id.call);
     if (isTablet)
     {
        callBtn.setEnabled(false);
        callBtn.setText("Not allowed to make a call");
     }

     callBtn.setOnClickListener( new onClickListener(){
           //Make a call
     });

}

public boolean isTablet()
{

    //Code for identifying. Return true if application is running on tablet
    //return false otherwise

}

因此,您无需等待用户点击“通话”按钮即可在平板电脑中将其禁用。 希望有所帮助。

答案 1 :(得分:1)

使用button.setEnabled(false);使可见,但用户无法点击和 button.setVisibility(View.GONE);使按钮不可见。和button.setText("YOUR_NEW_TEXT"); 更改按钮文本运行时

这不取决于屏幕的大小。

这是你想要的吗?或者更具体地说明你的问题。

答案 2 :(得分:0)

  

...文本在运行时更改了吗?

你可以使用setText();方法

关于问题的其他部分,首先需要定义“什么是平板电脑?”。它是一个7英寸,8英寸,10英寸的屏幕吗?它是一个mdpi,hdpi,xhdpi屏幕吗?它是一个能够打电话的设备吗?什么是适合你或你的项目的平板电脑?根据你的答案,您可以过滤代码(or xml in folders),使其按照您想要的方式运行。