2

这里的所有其他问题都是关于 ACTION_CALL 或 ACTION_DIAL 或这些主题的。我明白了。我需要一个意图。但是你如何实现你的自定义拨号器呢?我已经搜索和搜索,但找不到有关此主题的任何内容。我已经设计好了一切,准备好了,但没有关于如何将它们组合在一起。

我认为这就像向 layout/activity_main.java 添加一些元素和样式一样简单,但事实并非如此。到目前为止,简单的测试刚刚使应用程序在加载时崩溃。喜欢:

<TextView
    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="@string/title_two"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="phone"
    android:maxLength="11" >
    <requestFocus />
</EditText>

<Button
    android:id="@+id/one"
    android:text="1" />
<Button
    android:id="@+id/two"
    android:text="2" />
<Button
    android:id="@+id/three"
    android:text="3" />
<Button
    android:id="@+id/four"
    android:text="4" />
<Button
    android:id="@+id/five"
    android:text="5" />
<Button
    android:id="@+id/six"
    android:text="6" />
<Button
    android:id="@+id/seven"
    android:text="7" />
<Button
    android:id="@+id/eight"
    android:text="8" />
<Button
    android:id="@+id/nine"
    android:text="9" />
<Button
    android:id="@+id/star"
    android:text="*" />
<Button
    android:id="@+id/zero"
    android:text="0" />
<Button
    android:id="@+id/pound"
    android:text="#" />
<Button
    android:id="@+id/callButton"
    android:text="Call" />
<Button
    android:id="@+id/contacts"
    android:text="Con" />
<Button
    android:id="@+id/del"
    android:text="Del" />

我确信这只是我遇到的一些简单的问题,但我什至无法添加任何按钮而不会使所有内容崩溃。然后在 src/MainActivity.java 中:

public class MainActivity extends Activity {
    Button dialBtn;
    EditText numTxt;

@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dialBtn = (Button) findViewById(R.id.button1);
        numTxt = (EditText) findViewById(R.id.editText1);
        dialBtn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                try {
                    if (numTxt != null && (numTxt.getText().length()==10 ||numTxt.getText().length()==11)) {
                        startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel: 8880000000" + numTxt.getText())));
                    }else if(numTxt != null && numTxt.getText().length()==0){
                        Toast.makeText(getApplicationContext(), "You must enter a number to call", Toast.LENGTH_SHORT).show();
                    }else if(numTxt != null && numTxt.getText().length()<10){
                        Toast.makeText(getApplicationContext(), "Please check your number and try again", Toast.LENGTH_SHORT).show();
                    }
                } catch (Exception e) {
                    Log.e("DialerActivity", "error: " + e.getMessage(), e);
                }
            }
        });
    }
}

这里唯一的目标是向用户展示一个拨号器。他们输入他们的号码,他们可以像普通拨号器一样在屏幕上看到它,然后它为服务调用硬编码的访问号码,然后在 eventListener 变为应答时传递他们拨打的号码。

我承认我是新手,所以有几个明显的错误,我知道,我太新了,看不到它们。我认为这将是你可以用 Android 做的最简单的事情之一,因为那里有一百万个客户拨号器。我并不想做任何花哨的事情,您必须使用应用程序才能使用该服务,即它不会在后台徘徊,广播接收器试图拦截您的拨出电话并查看您是否要使用该服务。只是一个简单的拨号器应用程序。我哪里错了?其中一些代码是直接从书籍、在线教程中复制的,只是试图让它工作,但直接复制和粘贴我无法工作?

4

1 回答 1

1

如果这是您的布局的实际内容,那么有几个问题。

  1. 必须是 .xml 文件。
  2. 必须有根元素(即,您必须以特定类型的布局布局您的按钮 - 线性、相对等)这是开始的地方:http: //developer.android.com/guide/topics/ui/declaring-布局.html
  3. 布局 xml 中的每个元素都必须有两个属性:android:layout_width 和 android:layout_height
  4. 您必须将 View.OnClickListener 附加到每个按钮。
  5. 您将不得不以特定方式布置按钮。例如,使用 3 线性布局来承载 3 行数字按钮,包含在您的主布局中。

看起来您才刚刚开始,所以我建议您在线查看一些基本示例,以构建一个简单的 android 应用程序。

于 2012-08-22T19:30:32.187 回答