2015-03-23 2 views
0

Я пытаюсь получить различные намерения для проверки активности использования на моем телефоне. Я использую AndroidStudio, вот мой AndroidManifest.xml:Android: широковещательный приемник не работает, несмотря на то, что он объявлен

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.tomm.vpandroid2" > 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.READ_SMS" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.RECEIVE_MMS" /> 
    <uses-permission android:name="android.permission.WRITE_SMS" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
    <uses-permission android:name="android.permission.CAMERA" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".SettingsActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <receiver 
      android:name=".GlobalEventsReceiver" 
      android:enabled="true" > 
      <intent-filter> 
       <action android:name="android.intent.action.BROADCAST" /> 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
       <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" /> 
       <data android:mimeType="application/vnd.wap.mms-message" /> 
       <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
       <action android:name="android.intent.action.SCREEN_ON" /> 
       <action android:name="android.hardware.action.NEW_PICTURE" /> 
       <action android:name="android.hardware.action.NEW_VIDEO" /> 
      </intent-filter> 
     </receiver> 
    </application> 
</manifest> 

Вот это GlobalReceiver:

package com.tomm.vpandroid2; 
public class GlobalEventsReceiver extends BroadcastReceiver { 
    private final String TAG = "viprol.receiver"; 

    public GlobalEventsReceiver() { 
     Log.i(TAG, "global receiver constructed"); 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i(TAG, "received action"); 
    } 
} 

Проблема заключается в CTOR и OnReceive метода никогда не дозвонилась (даже если я придерживаюсь контрольной точки на них и отлаживать).

Я использую OnePlus One и отключил PrivateGuard для этого приложения. Не знаете, что еще попробовать?

+2

Попробуйте удалить , это работает? – Satty

+0

Спасибо вам за это, вот что это было! – tommed

ответ

1

Во-первых, вы будете отвечать только вещаниям, для которых тип MIME application/vnd.wap.mms-message. Предположительно, вы хотите вытащить это вместе со своим связанным действием в отдельном <intent-filter> для того же <receiver>, хотя я не играл с WAP в последние годы.

Во-вторых, я не знаю, есть ли радиопередача с именем BROADCAST, как в вашем первом <action>.

В-третьих, IIRC, вы не можете перечислить для SCREEN_ON из зарегистрированного манифеста приемника, но вместо этого только из получателя, зарегистрированного через registerReceiver().

 Смежные вопросы

  • Нет связанных вопросов^_^