BroadCast Receiver呼叫意图第二次无法工作

时间:2012-03-01 09:36:51

标签: android android-intent

在我有一个接收器来预测来电,一旦我接到电话我需要把我的应用程序带到屏幕前面(过度接听和拒绝scree),接收器的代码如下所示,

public class IncomingCallReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();

        if(null == bundle)
            return;

        Log.i("IncomingCallReceiver",bundle.toString());

        String state = bundle.getString(TelephonyManager.EXTRA_STATE);

        Log.i("IncomingCallReceiver","State: "+ state);

        if(state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING))
        {
            String phonenumber = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);

            Log.i("IncomingCallReceiver","Incomng Number: " + phonenumber);

            String info = "Detect Calls sample application\nIncoming number: " + phonenumber;

            Intent intent2open = new Intent(context, com.varma.samples.detectcalls.ui.MainActivity.class);
            intent2open.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent2open.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
            String name = "KEY";
            String value = "String you want to pass";
            intent2open.putExtra(name, value);
            context.startActivity(intent2open);
            Toast.makeText(context, info, Toast.LENGTH_LONG).show();
        }
    }

}

在我的清单中我添加了以下参数,

<application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name="com.varma.samples.detectcalls.ui.MainActivity"
                  android:label="@string/app_name" android:launchMode="singleTop" android:taskAffinity="@android:string/no">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name="com.varma.samples.detectcalls.receivers.OutgoingCallReceiver"> 
            <intent-filter> 
                <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
            </intent-filter> 
        </receiver>

        <receiver android:name="com.varma.samples.detectcalls.receivers.IncomingCallReceiver"> 
            <intent-filter> 
                <action android:name="android.intent.action.PHONE_STATE"/>
            </intent-filter> 
        </receiver>

    </application>
    <uses-sdk android:minSdkVersion="3" />

    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

但是当我启动活动时,接收器开始收听来电,然后我关闭设置中的所有应用实例,当第一次来电时,我的应用程序带来了前面的回答&amp;拒绝屏幕。

然后我按下按钮拒绝我的电话。然后当我再次拨打电话时,活动没有带到我的拨号屏幕前。我不知道问题出在哪里。

0 个答案:

没有答案