さらに改善、したつもり
[ofnhwx.olib.git] / src / jp / gr / java_conf / ofnhwx / olib / utils / OPhone.java
blob46b6733ba47b5902c308db99f594f8a28be1ac3b
2 package jp.gr.java_conf.ofnhwx.olib.utils;
4 import android.content.Context;
5 import android.content.Intent;
6 import android.content.pm.PackageManager.NameNotFoundException;
7 import android.net.Uri;
8 import android.text.TextUtils;
10 /**
11 * 電話関連の処理をまとめたユーティリティクラス.
12 * @author yuta
14 public abstract class OPhone {
16 private static final String SIP = "sip";
17 private static final String TEL = "tel";
19 /**
20 * 指定された番号に発信(android.permission.CALL_PHONE, android.permission.CALL_PRIVILEGED).
21 * @param context
22 * @param number
24 public static final void call(Context context, String number) {
25 call(context, TEL, number);
28 /**
29 * 指定された番号に発信.
30 * @param context
31 * @param scheme
32 * @param number
34 public static final void call(Context context, String scheme, String number) {
35 if (TextUtils.isEmpty(number)) {
36 return;
38 Uri uri = Uri.fromParts(checkScheme(scheme), number, null);
39 Intent call = new Intent(Intent.ACTION_CALL, uri);
40 call.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
41 context.startActivity(call);
44 /**
45 * 指定されたスキーマが有効かを判定する.
46 * @param scheme
47 * @return
49 public static final boolean checkValidScheme(String scheme) {
50 try {
51 checkSchemeWithThrow(scheme);
52 return true;
53 } catch (NameNotFoundException e) {
54 return false;
58 private static final String checkSchemeWithThrow(String scheme) throws NameNotFoundException {
59 if (SIP.equals(scheme)) {
60 return SIP;
62 if (TEL.equals(scheme)) {
63 return TEL;
65 throw new NameNotFoundException();
68 private static final String checkScheme(String scheme) {
69 try {
70 return checkSchemeWithThrow(scheme);
71 } catch (NameNotFoundException e) {
72 return TEL;