私はストックバージョンを置き換えるために本当にシンプルな通話アプリを開発しようとしています。基本的には、着信に応答して、非常にシンプルなカスタマイズされたUIをユーザーに提示したいだけです。発信や派手なものは必要ありません。
私が見つけたパッケージandroid.telecom.incallservice
(API 23で利用可能)をWebで検索しています。このサービスは、通話を管理するためのユーザーインターフェイスを提供したいアプリによって実装されます。
それは有望に思えますが、私はそれを機能させるのに苦労しています。InCallServiceを拡張する単純なサービスを作成し、ドキュメントで説明されているようにマニフェストで宣言しました。ただし、設定のデフォルトの電話アプリを自分のものに変更できると思いますが、在庫の電話アプリしか見つかりません。
これは、ドキュメントからのマニフェスト宣言です。私は交換してきたBIND_IN_CALL_SERVICE
とBIND_INCALL_SERVICE
私は、これはタイプミスだと思いますので、。
<service android:name="your.package.YourInCallServiceImplementation" android:permission="android.permission.BIND_INCALL_SERVICE">
<meta-data android:name="android.telecom.IN_CALL_SERVICE_UI" android:value="true" />
<intent-filter>
<action android:name="android.telecom.InCallService"/>
</intent-filter>
</service>
サードパーティのアプリが通話アプリのデフォルトを置き換えることさえ可能ですか?
このAPIを使用したサンプル実装はありますか?参照として使用できますか?私はグーグルの実装を見つけましたが、これは他のアプリでは利用できないいくつかの権限を利用するシステムアプリです(例:) android.permission.MODIFY_PHONE_STATE
。
正しいInCallService
マニフェスト登録とスタブ実装を提供した後、自分のアプリが下にあると期待できるという仮定で正しいDefault Apps -> Phone
ですか?他に何かを宣言する必要がありますか?
ありがとう。
ドキュメントによると、自分でコメントするときは、マニフェストにこれを追加する必要があります。
<service android:name="your.package.YourInCallServiceImplementation"
android:permission="android.permission.BIND_INCALL_SERVICE">
<meta-data android:name="android.telecom.IN_CALL_SERVICE_UI" android:value="true" />
<intent-filter>
<action android:name="android.telecom.InCallService"/>
</intent-filter>
</service>
android:name
このサービスを実装するクラスに置き換える必要があります。
<activity android:name="your.package.YourDialerActivity">
<intent-filter>
<action android:name="android.intent.action.DIAL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
android:name
独自のダイヤラ実装のメインアクティビティを実装するクラスに置き換える必要があります。
ここでこれに関する詳細情報を見つけることができます:https://developer.android.com/guide/topics/connectivity/telecom/selfManaged
そして、これがガイドとして使用できるサンプルプロジェクトです:https://github.com/arekolek/simple-phone
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加