ここで奇妙な問題があります。通話を録音するアプリがあります。このために、私はブロードキャストレシーバーとバックグラウンドで実行されているサービスを常に使用しています。ただし、問題は、これらのものがアプリアイコンを提供しないため、ユーザーとの対話ができないことです。そこで、別のアクティビティを作成し、マニフェストでランチャーアクティビティとして宣言しました。これでアプリにアイコンが表示され、そのアイコンをクリックするとユーザーの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
そして、カーネルに関する多くの行は、上記の行とまったく同じです。誰でも何が問題なのか教えてもらえますか?私を助けてください。