Не удается запустить намерение службы { flg = 0x10000000 cmp = com.company.callrecorder/.CallStateListener }: не найдено

#android #broadcastreceiver #android-intent

#Android #broadcastreceiver #android-намерение

Вопрос:

Я пытаюсь записывать звонки. Но есть большая проблема при запуске намерения службы.

WARN/ ActivityManager(61): не удается запустить намерение службы { flg= 0x10000000 > cmp=com.company.callrecorder/.CallStateListener }: не найдено

Это мой код Broadcastreceiver:

         public class StartServicesAtStartUp extends BroadcastReceiver
  

{
общедоступное статическое намерение PhoneStateListener;
публичная пустота при получении (контекстный контекст, намерение намерения)
{
Log.d(«DEBUG», «com.its.CallRecorder инициирован …»);
Toast.makeText(контекст, » Запись вызова инициирована .. «, Toast.LENGTH_SHORT).show();
Start_CallRec(контекст);
}

     public static void Start_CallRec(Context context)
    {
        if(!SharedData._Started )
        {
            if(SharedData._AutoStart)
            {
                Toast.makeText(context," Call Recording Auto-Start.. ", Toast.LENGTH_SHORT).show();
                phoneStateListener = new Intent(context, CallStateListener.class);
                phoneStateListener.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startService(phoneStateListener);
                Log.d("DEBUG", "com.its.CallRecorder Call Recorder Started ...");
                TelephonyManager tManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
                CallStateListener callStateListener = new CallStateListener();
                tManager.listen(callStateListener,PhoneStateListener.LISTEN_CALL_STATE);
                SharedData._Started = true;
                Toast.makeText(context," Call Recording Started ... ", Toast.LENGTH_SHORT).show();
            }   
        }
        else
        {
            Toast.makeText(context," Call Recording Already Active.. ", Toast.LENGTH_SHORT).show();
        }
    }

    public static void Stop_CallRec(Context context)
    {
        if(SharedData._Started )
        {
            context.stopService(phoneStateListener);
            Toast.makeText(context," Call Recording Stopped  ... ", Toast.LENGTH_SHORT).show();
            SharedData._Started = false;                
        }
        else
        {
            Toast.makeText(context," Call Recording Already Stopped  ... ",  Toast.LENGTH_SHORT).show();
        }
    }
  

}

И CallStateListener.java код — это:

 public class CallStateListener extends PhoneStateListener {
public void onCallStateChanged(int state, String incomingNumber)
{
    super.onCallStateChanged(state, incomingNumber);
    switch(state)
    {
    case TelephonyManager.CALL_STATE_IDLE:
        if(SharedData._Recording) 
            { Recorders_Stop(); }
        break;
    case TelephonyManager.CALL_STATE_RINGING:
        break;
    case TelephonyManager.CALL_STATE_OFFHOOK:
        String CallDate = SanityDate();
        String CallNum = SanityNum(incomingNumber);
        String RootDir = SharedData._Path ;  
        String CallDir = SharedData._Path   CallNum   "/" ;
        String CallFile = SharedData._Path    CallNum   "/"   CallNum   "-"   CallDate ;
        if(!SharedData._Recording)
        {
            SharedData._Recording = true;
            String med_state = android.os.Environment.getExternalStorageState();
            if(!med_state.equals(android.os.Environment.MEDIA_MOUNTED))
                { break; }

            File directory = null;
            directory = new File(RootDir   "text.txt" ).getParentFile();
            if (!directory.exists() amp;amp; !directory.mkdirs())
                { break; }

            directory = new File(CallDir   "text.txt" ).getParentFile();
            if (!directory.exists() amp;amp; !directory.mkdirs())
                { break; }

            Recoders_Init(CallFile);
            Recorder_Prepare();
        }

        break;
    }
}
  

Ответ №1:

Я пытаюсь записывать звонки.

Это невозможно, за исключением, возможно, в режиме громкой связи.

Но есть большая проблема при запуске намерения службы.

Это потому, что у вас нет Service . У вас есть BroadcastReceiver . A BroadcastReceiver не является a Service . Вы не можете звонить startService() с Intent идентификатором a BroadcastReceiver .

Комментарии:

1. Спасибо за ваш ответ CommonsWare. Мне удалось записать звонки с помощью этого кода без использования громкой связи. Проблема связана с записью с различными типами, такими как .3gp, .mp4 и .amr. Когда я решаю проблему повторного запуска mediarecorder, проблема решается спонтанно.