استدعاء Android.speech.RecognizerIntent API في مربع حوار خطأ في الاتصال ، يعرض تحذير "COMMINT_PACKAGE" في السجل

StackOverflow https://stackoverflow.com/questions/3693480

  •  02-10-2019
  •  | 
  •  

سؤال

لقد كتبت تطبيقًا صغيرًا للسماح للمستخدم باختيار اللغة التي يستخدمها البحث الصوتي عبر زر ، بدلاً من الاعتماد على تفضيل لغة المستخدم (في بعض الأحيان ترغب في البحث باللغة اليابانية دون تبديل واجهة المستخدم بالكامل إلى اليابانية).

أنا أختبر التطبيق على HTC Desire /Android 2.1 (SoftBank-X06HT). ومع ذلك ، عندما أسمي واجهة برمجة تطبيقات الصوت ، أحصل على مربع حوار "فشل الاتصال" [إعادة المحاولة/إلغاء] ، ويظهر Logcat هذا التحذير:

09-12 11:26:13.583: INFO/RecognitionService(545): ssfe url=http://www.google.com/m/voice-search
09-12 10:49:45.683: WARN/RecognitionService(545): required parameter 'calling_package' is missing in IntentAPI request

لاحظ أنه يمكنني استخدام تطبيق Google Voice Search وهو يعمل بدون مشاكل.

وفقا لمستندات API http://developer.android.com/reference/android/speech/recognizerint.html#extra_calling_package لا يتعين على المطورين استخدام معلمة COMMBLE_PACKAGE. حسنًا ، إذا كان هذا هو الحال ، فلماذا يقول السجل إنه مفقود؟

حاولت تقديم المعلمة بنفسي لكنها لم تغير النتيجة على الإطلاق.

 private static final String TRIVOICE_CALLING_PACKAGE = "calling_package";
 private void callSpeechWebSearch (String language) {
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,
            language);
    intent.putExtra(TRIVOICE_CALLING_PACKAGE,
            "org.filsa.trivoice");

    //intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
    try {
        startActivity(intent);         
    } catch (ActivityNotFoundException anfe) {
     makeToast("ANFE:" +anfe.getMessage());
    }
}
هل كانت مفيدة؟

المحلول

كنت أواجه نفس المشكلة وقمت بتعيين حزمة الاتصال على حزمة الاتصال الفعلية (وليس الفصل) والأشياء التي تعمل بشكل صحيح. Android 2.2 على tmobile G2.

نصائح أخرى

استخدم هذا الرمز للحصول على اسم الحزمة الخاص بك

intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
                context.getPackageName());
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top