0

我有一个用于来电的广播接收器。我想在来电时启动一个新活动。我知道从 android 3.0 所做的更改,除非用户手动启动应用程序,否则广播接收器将无法工作目的我启动了一个虚拟活动,其中只有一条吐司消息。广播接收器仍然无法正常工作。这是我的代码

我的广播接收器

public class IncomingCallResult extends BroadcastReceiver 
{
String TAG="IncomingCallResult";    
@Override
public void onReceive(Context arg0, Intent I1) 
{
    Log.i(TAG,"inside on receive........");
    Bundle bundle=I1.getExtras();
    String state=bundle.getString(TelephonyManager.EXTRA_STATE);

    if(state.equals(TelephonyManager.EXTRA_STATE_RINGING))
    {
        Intent flash_intent=new Intent(arg0,LedFlasher.class);
        flash_intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        arg0.startActivity(flash_intent);

    } 


}    

}

清单文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.blinker"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <receiver 
        android:name=".IncomingCallResult"
        android:enabled="true">
        <intent-filter
            android:priority="214783648" 
            android:name="android.intent.action.PHONE_STATE">
        </intent-filter>
    </receiver>

    <activity
        android:name=".LedFlasher"
        android:label="@string/title_activity_incoming_call_result" >     
     </activity>

    <activity
        android:name=".Dummy">
         <intent-filter >
             <action android:name="android.intent.action.MAIN"/>
             <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>     
     </activity>



</application>

代码有什么问题?请帮忙

4

1 回答 1

0

正如您已经知道,除非用户手动启动应用程序,否则广播接收器将无法工作。为此,您应该不会对广播接收器在用户手动打开应用程序一次之前无法工作感到惊讶。也就是说,您必须创建一个启动器活动,用户可以手动单击并打开它。

更重要的是,最好打开并在您的应用程序中停留大约 20 秒,因为我记得应用程序配置的更改需要 10 或 20 秒才能保存。

于 2013-09-02T10:46:21.153 回答