2013年4月24日水曜日

[透けテル]標準電話がダイアログに出てこないよーーーーの修正


僕はskype等の電話アプリを入れていないので気づかなかったんですが、タレこみにより発覚。
Android4.1あたりから、電話を掛ける際のどれで掛けるかのダイアログに標準の電話が出なくなっていた模様。

4.1端末がないので微妙ですが、タレこみ端末は4.1っぽかったので、多分4.1から。
前に使っていた4.0ではそんな問題はなかったので。

で、現象としてはこんな感じ。

電話系アプリは標準のみ
→標準電話で発信

標準電話とskype(なんでもいいけど)
→skypeで発信

標準電話とskype(なんでもいいけど)と050plus(なんでもいいけど)
→skypeと050plusのどっち使う?ダイアログが表示


チョット専門チックに書くと、「android.intent.action.CALL_PRIVILEGED」インテントに標準電話が反応しなくなっているっぽい。
透けテルでは、「android.intent.action.CALL_PRIVILEGED」が失敗したら「Intent.ACTION_CALL」投げてたので電話系アプリ入れていなければ標準で掛けられたようです。

で、何を対策したかというと、こんなアクティビティ作って

<activity
 android:name=".Call" >
 <intent-filter>
  <action android:name="android.intent.action.CALL_PRIVILEGED" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:scheme="tel" />
 </intent-filter>
</activity>


中身はこれだけ
public class Call extends Activity {

@Override
protected void onStart() {

super.onStart();

startActivity(new Intent(Intent.ACTION_CALL, getIntent().getData()));
finish();
}
}

要するに、標準CALLを中継する「CALL_PRIVILEGED」インテント受信アクティビティを作ったという事です。
そうすると、発信ボタンを押すと、「skype」と「透けテルアイコンの標準電話」っていう選択肢が出るので、どちらも選択可能と。

こんなんですー。

0 件のコメント:

コメントを投稿