Androidのボタンをクリックすると、プログラムでナンバーダイヤルキーパッド(電話)を表示したいのですが。コードは直接番号ダイヤルに使用できますが、ボタンをクリックしたときにダイヤルキーパッドを表示するだけで済みます。
Intent intent = new Intent(Intent.ACTION_DIAL);
startActivity(intent);
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:9999999999"));
startActivity(intent);
このため、AndroidManifest.xmlに権限を追加する必要はありません。
Intent intent = new Intent(Intent.ACTION_CALL_BUTTON);
startActivity(intent);
ダイヤルウィンドウチェックが表示されます ここ を参照してください
ボタンまたはウィジェットの例を作成します:button1
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent callIntent = new Intent(Intent.ACTION_DIAL);
callIntent.setData(Uri.parse("tel:"+button1.getText().toString().trim()));
startActivity(callIntent);
}
});
マニフェストに権限を追加します。
<uses-permission Android:name="Android.permission.CALL_PHONE" />
public void openDialPad(String phoneNumber) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse(phoneNumber));
startActivity(intent);
}
これは異なりますが、番号をクリックしてダイヤラパッドにアクセスする場合は、xmlでautolink属性を宣言します。
Android:autoLink="phone"
Intent callIntent = new Intent(Intent.ACTION_DIAL);
callIntent.setData(Uri.parse("tel:" + phoneNumber));
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
startActivity(callIntent);
また、次のようにカスタムダイヤル画面をマニフェストに登録する必要があります。
<application
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name" >
<activity
Android:name=".MyDialerApplication"
Android:label="@string/app_name" >
<intent-filter Android:priority="100" >
<action Android:name="Android.intent.action.MAIN" />
<action Android:name="Android.intent.action.DIAL" />
<action Android:name="Android.intent.action.CALL_PRIVILEGED" />
<category Android:name="Android.intent.category.DEFAULT" />
<data Android:scheme="tel" />
</intent-filter>
</activity>
非アクティビティクラスで使用する場合は、次のような関数を作成します。
_package bp;
import Android.app.Activity;
import Android.content.Intent;
import Android.net.Uri;
import session.MyApplication;
/**
* Created by Atiar Talukdar on 7/11/2019.
*/
public class Utils {
public static void openDialPad(Activity activity, String phoneNumber) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:" + phoneNumber));
activity.startActivity(intent);
}
}
_
そしてanywhareからlikeのように呼び出します:
Utils.openDialPad(getActivity(),data.getContactNo());
または
Utils.openDialPad(this,data.getContactNo());