3

プログラムで発信者IDをアクティビティから非表示/表示したい。私はAndroidのドキュメントでそれを見つけようとしましたが、運がありませんでした。多分あなたは何かアイデアがありますか?

4

5 に答える 5

4

これを尋ねる質問を Android Google グループに投稿しましたが、まったく回答がありませんでした。SOに関する他の質問もいくつか見ましたが、回答もありませんでした(または機能しませんでした)。

絶対に無理だという結論に達しました。私の理屈はこうです...

[設定] -> [通話] -> [追加設定] に移動すると、「設定の呼び出し」という HeaderTitle を持つ AlertDialog が表示され、円形の進行状況インジケーターと「設定を読み込んでいます...」というメッセージが表示されます。

その時点で、私の電話が私の電話/ネットワークプロバイダーにアクセスしていることに気づきました。結果の「チューザー」ダイアログには、「ネットワークのデフォルト」、「番号を非表示」、および「番号を表示」のオプションが表示され、選択を行うと(またはダイアログを単に「キャンセル」した場合でも)、別の AlertDialog が円形の進行状況で表示されます「設定を更新しています...」というメッセージが表示されたインジケータ。

要するに、発信者 ID の設定は電話の設定に対して完全に「ローカル」ではなく、プロバイダーとのやり取りに依存しているようです。何らかの理由で、Android API はこれをプログラムで操作することを許可していません。

これが Android の将来のバージョンの「To Do」リストに含まれているものなのか、それともそれを許可することで法的/セキュリティ上の影響があるのか​​、またはその他の理由があるのか​​ はわかりません。いずれにせよ、TelephonyManager (たとえば) が単にこれを切り替える方法がない理由を説明できる人は、今のところ誰も見つけていません。

編集:標準 API を使用して追加設定 AlertDialog を取得することもできません。

私がそう言う理由は、デバイスの「設定」のさまざまな部分を引き出すことができるからです。たとえば、私のアプリの 1 つで、startActivity() に渡されるインテントのコンストラクターで android.provider.Settings.ACTION_WIRELESS_SETTINGS を使用します。これにより、Wi-Fi、モバイル インターネット、および Bluetooth を有効/無効にするための [設定] ページが表示されます。

android.provider.Settings には、他の設定ページ用の他の同様のアクションがありますが、「通話」の 1 つもありません。通話 -> 追加設定を気にせず、AlertDialog で発信者 ID の非表示/表示を選択できるようにするものはありません。

これが可能であれば、完全に見逃していない限り、文書化されていない API である必要があります (長い時間をかけて調べました)。Android のソースコードを調べることが答えを見つける唯一の方法かもしれないと思いますが、まだ試していません。

于 2010-12-13T01:52:21.387 に答える
3

追加の通話設定ダイアログを取得できました。以下の説明:

設定の一部のように見えますが、実際には Native PhoneApp の一部です。PhoneApp の AndroidManifest.xml を見ると、Activity GsmUmtsAdditionalCallOptions が android.intent.action.MAIN の IntentFilter を定義していることがわかります。

したがって、いくつかの電話で正しく動作することを確認したコードは次のとおりです。

Intent additionalCallSettingsIntent = new Intent("android.intent.action.MAIN");
ComponentName distantActivity = new ComponentName("com.android.phone", "com.android.phone.GsmUmtsAdditionalCallOptions");
additionalCallSettingsIntent.setComponent(distantActivity);
startActivity(additionalCallSettingsIntent);
于 2012-02-29T11:52:19.117 に答える
2

#31# トリックが 1 回の通話のニーズに対応する場合は、ブロードキャスト レシーバーを追加して発信通話通知をリッスンし、ダイヤルされる前に先頭に #31# を含めるように番号を変更できます。Android では、このように途中で番号を変更することができます。

デフォルトで発信者 ID とネットワーク サポート #31# が有効になっていて、たとえばウィジェットを使用してオフに切り替えたい場合にのみ機能します。

于 2011-05-24T22:21:27.443 に答える
1

発信者IDはネットワーク固有であり、電話が制御するものではありません。実際、特定のモバイルネットワーク構成では、電話は自分の電話番号さえ「知らない」。

一部のネットワークは、発信者IDネットワークコマンドのアクティブ化/非アクティブ化の送信をサポートしています。GSMでは、これは通常#31#です。永続的または呼び出しごとに設定できます。

  1. Permanentは、すべての通話の発信者IDを非表示にするようにネットワークに要求します。
  2. 通話ごとに、その通話に対してのみ発信者IDを非表示にするようにネットワークに要求します。後者は、#31#によって呼び出されている番号の前に付けることによって実現されます。たとえば、#31#85432786426を呼び出すと、85432786426が呼び出され、発信者が非表示になります。

一部のネットワークは両方をサポートし、一部は一方のみをサポートし、一部はそれを有効にしません。運試しをして、ダイヤル番号の前に#31#を付けて、機能するかどうかを確認してください。

http://www.gsm-security.net/faq/gsm-caller-id-clip-clir.shtml

于 2011-01-01T19:00:03.810 に答える
0

追加の通話設定へのショートカットが必要な場合は、App CutGSM 設定を使用して選択できます。ホーム画面にショートカットが作成されます。

于 2011-05-24T08:23:20.743 に答える