130

バンドルで呼び出す番号をアクティビティに渡します

そして、そのような活動では、私はその番号に電話をかけるためのボタンを持っています、これはコードです:

callButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(bundle.getString("mobilePhone")));
            }
        }); 

ボタンを押しても何も起こらないので、何かがおかしいです...

私は何が間違っているのですか?

PD:私はAndroid 1.5互換プロジェクトを使用しています...多分電話は1.5と互換性がありませんか?

4

10 に答える 10

267

startActivityを呼び出すのを忘れました。次のようになります。

Intent intent = new Intent(Intent.ACTION_CALL);

intent.setData(Uri.parse("tel:" + bundle.getString("mobilePhone")));
context.startActivity(intent);

インテント自体は、単に何かを説明するオブジェクトです。何もしません。

マニフェストに関連する権限を追加することを忘れないでください。

<uses-permission android:name="android.permission.CALL_PHONE" />
于 2011-01-27T13:16:39.260 に答える
24

私の電話でこれを試しました、そしてそれは完全に働きます。

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:900..." ));
startActivity(intent);

この権限をマニフェストファイルに追加します。

<uses-permission android:name="android.permission.CALL_PHONE" />
于 2012-08-24T04:58:47.040 に答える
13
 Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+198+","+1+","+1)); 
             startActivity(callIntent);

複数注文の場合

これは、DTMF呼び出しシステムに使用されます。通話が切断された場合は、番号の間にさらに「、」を渡す必要があります。

于 2011-08-26T11:53:18.747 に答える
3

そこを見てください:http://developer.android.com/guide/topics/intents/intents-filters.html

呼び出し権限を与えるためにマニフェストファイルを更新しましたか?

于 2011-01-27T13:16:48.833 に答える
3

これには許可は必要ありません。

val intent = Intent(Intent.ACTION_DIAL, Uri.parse("tel:+123456"))
startActivity(intent)

または

val intent = Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", "+123456", null))
startActivity(intent)

ただし、もう1つのダイアログが表示されます(電話を1回だけ呼び出すか、常に呼び出すかを尋ねます)。そのため、権限を付けて使用することをお勧めします(取り消された権限android.permission.CALL_PHONEACTION_CALLを参照)。

于 2019-09-26T15:17:10.793 に答える
2

ここでは、あなたの活動から電話をかける方法を紹介します。電話をかけるには、このコードをアプリに配置する必要があります。

try {
    Intent my_callIntent = new Intent(Intent.ACTION_CALL);
    my_callIntent.setData(Uri.parse("tel:"+phn_no));
    //here the word 'tel' is important for making a call...
    startActivity(my_callIntent);
} catch (ActivityNotFoundException e) {
    Toast.makeText(getApplicationContext(), "Error in your phone call"+e.getMessage(), Toast.LENGTH_LONG).show();
}
于 2012-10-20T23:01:34.967 に答える
2

それは非常にうまく機能しています。このように、ユーザーからの許可は必要ありません。通話部分を直接開くことができます。

秘訣は、 ACTION_CALLの代わりにACTION_DIALを使用することです。

private void callPhoneNumber() {
    String phone = "03131693169";
    Intent callIntent = new Intent(Intent.ACTION_DIAL);
    callIntent.setData(Uri.parse("tel:" + phone));
    startActivity(callIntent);
}
于 2020-09-05T19:26:46.230 に答える
0
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
   final Button button = (Button) findViewById(R.id.btn_call);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String mobileNo = "123456789";
            String uri = "tel:" + mobileNo.trim();
            Intent intent = new Intent(Intent.ACTION_CALL);
            intent.setData(Uri.parse(uri));
            startActivity(intent);
        }
    });*
 }
于 2014-03-20T06:47:49.080 に答える
0

Kotlinで誰かが探しているなら

    val  uri = "tel:+800******"
    val call_customer_service = Intent(Intent.ACTION_CALL)
    call_customer_service.setData(Uri.parse(uri))
    startActivity(call_customer_service)

他のいくつかのソリューションと同様に、android.permission.CALL_PHONE許可が必要です。

于 2019-04-15T05:38:59.720 に答える
0

SecurityExceptionが発生した場合(および呼び出しが機能しない場合)、これは危険な許可と見なされるため、呼び出しを行うためのユーザー許可を要求することを検討する必要があります。

ActivityCompat.requestPermissions(
    activity,
    new String[] {Manifest.permission.CALL_PHONE},
    1
);

これはマニフェストの許可とは何の関係もないことに注意してください(あなたも持っている必要があります)

于 2020-10-03T15:20:17.507 に答える