【发布时间】:2016-07-19 02:28:12
【问题描述】:
我正在从“活动”向“服务”中的接收者发送意图(并传递数据)。我的代码有活动和服务(有接收者)。接收者声明如下
<receiver android:name="xxx"
android:enabled="true" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
<!-- protected intents meant for os and not for us <action android:name="android.intent.action.ACTION_NEW_OUTGOING_CALL" android:priority="0" /> -->
</intent-filter>
</receiver>
Activity定义如下
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我评论了 Use an intent to send data to my activity
我调用的意图是调用意图并传递目标电话号码,代码如下
Log.e(TAG,"Calling "+number);
Intent callIntent = new Intent(Intent.ACTION_CALL); //ACTION_NEW_OUTGOING_CALL is deprecated in API 21, hence ACTION_CALL
callIntent.putExtra("PHONE_NUMBER",number);
number = "tel:"+number;
callIntent.setData(Uri.parse(number));
startActivity(callIntent);
上面的代码成功地从我的应用程序拨打电话。我还有一个接收器来拦截呼叫,并且接收器很好地拦截了上述呼叫。然而,接收者缺少上述意图的“额外”;在以下代码中,我总是将“PHONE_NUMBER”设为空
@Override
public void onReceive(Context context, Intent intent) {
//blah blah..
savedNumber = intent.getExtras().getString("PHONE_NUMBER");
if(savedNumber == null)
savedNumber = intent.getStringExtra("PHONE_NUMBER");
Log.e(TAG, " savedNumber = "+savedNumber);
}
我的错误是什么,为什么我在接收者中获得了意图,但缺少“附加”(您可能已经注意到,我试图从意图中获得两种方式)
【问题讨论】:
标签: android