这里的所有其他问题都与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可以做的最简单的事情之一,因为那里有一百万个客户拨号程序。我并不想做任何花哨的事情,您必须使用该应用程序才能使用该服务,即它不是在与BroadcastReceiver一起在后台徘徊,试图拦截您的去电并查看您是否要使用该服务。只是一个简单的拨号程序。我要去哪里错了?某些代码是直接从书籍,在线教程中复制而来,只是试图使其正常工作,但直接复制并粘贴却无法正常工作?

最佳答案

如果那是您布局的实际内容,则存在几个问题。


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


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

关于java - 编程和实现自定义拨号器UI,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12079890/

10-10 23:59