1

ブロードキャストを正常にキャッチし、番号が要件を満たしている場合は、この呼び出し要求を終了して別の要求を作成します。つまり、ユーザー選択ポップアップを許可するために、私の onReceive はここにあります

@Override
public void onReceive(Context context, Intent intent) {
    final String oldNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);          

    final String newNumber = this.getResultData();
    boolean useAmivox = true;

    Bundle bundle = intent.getExtras();

    Log.d(DTAG, "bundle: " + bundle.toString());

    Log.d(DTAG, "Number: " + oldNumber );

    if( oldNumber != null ){
        boolean isGlobal= PhoneNumberUtils.isGlobalPhoneNumber(oldNumber);
        Log.d(DTAG, "isGlobal: " + isGlobal );
        boolean isIntl= PhoneNumberUtils.toaFromString(oldNumber)== PhoneNumberUtils.TOA_International ? true:false;
        Log.d(DTAG, "isIntl: " + isIntl );
        useAmivox = isGlobal && isIntl; 
    }
    if( oldNumber.contains(TAG))
        useAmivox=true;


    if ( !oldNumber.contains(TAG) && useAmivox) {

        setResult(Activity.RESULT_OK, null, null);
        Intent lIntent = new Intent();
        lIntent.setAction(Intent.ACTION_CALL);

        lIntent.setData(Uri.parse("tel:" + oldNumber + TAG));
        lIntent.putExtra(Intent.EXTRA_PHONE_NUMBER, oldNumber);
        lIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(lIntent);
   }else{
        if (oldNumber != null)
            setResult(Activity.RESULT_OK, oldNumber.replace(TAG, ""),
                    null);
    }
}

マニフェストはこんな感じ

<receiver
        android:name="com.amivox.callintercepttest.OutCallInterceptor"
        android:enabled="true"
        android:exported="true" >
        <intent-filter android:priority="10" >
            <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
        </intent-filter>
</receiver>

ジェリービーン4.1.1を使用したGalaxy S3で何が起こるかというと、ユーザーが電話を選択した場合、つまり、常に私のアプリではない場合、呼び出しは行われません。つまり、ブロードキャストレシーバーは常に結果をnullに設定します。このコードは2.xの何かから機能しており、ユーザーが「デフォルト」を「電話」に設定することを選択した場合、ブロードキャストレシーバーに悪影響はありません;) Jel​​ly beanエミュレーターテストも正常に機能しますが、Galaxy S3 with Jelly豆はしません!同じ問題を抱えていて、解決策を見つけた人はいますか?

4

0 に答える 0