是否可以与广播接收器进行不同的发射器活动?

时间:2012-07-17 05:06:57

标签: android service broadcastreceiver

我这里有一个奇怪的问题。我有一个记录通话的应用程序。为此,我使用广播接收器和一直在后台运行的服务。但问题是这些东西不提供应用程序图标,因此无法与用户进行交互。所以我创建了另一个活动,并在我的Manifest中将其声明为Launcher活动。现在,应用程序已显示图标,单击该图标可为用户打开GUI。这是我的表现:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.callrecorderbr.activity"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >

      <receiver android:name=".EavesDropperReceiver" android:enabled="true">
        <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE"></action>
            <action android:name="android.intent.action.BOOT_COMPLETED"></action>
            <!-- <action android:name="android.intent.action.NEW_OUTGOING_CALL"></action>  -->
        </intent-filter>
    </receiver> 

      <activity android:name=".MainMenuActivity"
              android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"> 
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".EavesDropperActivity"
        android:label="@string/app_name" >
    </activity> 
    <activity android:name=".RecordingsListActivity"
        android:configChanges="orientation|keyboardHidden"
        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />
    <activity android:name=".PlayRecordingActivity"
        android:configChanges="orientation|keyboardHidden"
        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />


</application>

<!-- <uses-permission android:name="android.permission.INTERNET" /> -->
<!-- <uses-permission android:name="android.permission.WAKE_LOCK" /> -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />


 </manifest>

但这种方法在应用程序运行时给了我一个奇怪的异常,我尝试录制一个电话。只要用户开始通话,该应用就会冻结并强制退出。它在我的Logcat中给出了一些ANR。这是logcat:

    07-17 10:21:42.147: E/ActivityManager(59): ANR in com.callrecorderbr.activity (com.callrecorderbr.activity/.EavesDropperActivity)

    07-17 10:21:42.147: E/ActivityManager(59): Reason: keyDispatchingTimedOut

    07-17 10:21:42.147: E/ActivityManager(59): CPU usage from 28362ms to 28ms ago:
    07-17 10:21:42.147: E/ActivityManager(59):   system_server: 8% = 6% user + 1% kernel / faults: 1684 minor 7 major

然后关于内核的很多行与上面的行相同。谁能告诉我这是什么问题。请帮帮我。

1 个答案:

答案 0 :(得分:1)

当任何线程中存在长操作时(通常是'主'线程),会发生ANR。要查看更多内容,请查看/ data文件夹中的traces.txt文件。以下链接将帮助您调查ANR错误"ANR"

相关问题