2016-07-27 10 views
1

Ich schrieb Anwendungen für Android 4.1 (16 API), die auf den eingehenden Anruf reagieren sollte, aber es passiert nicht. Ich sehe viele Tutorials und es ist zu einfach, einen Fehler zu machen, aber ... Ich benutze Android Studio 1.4. Telefon mit Apk ist Nexus 6 mit Android 6.0.1. Irgendeine Idee, was ich falsch mache?ANDROID BroadcastReceiver feuern nicht

Dies ist eine BroadcastReceiver Klasse:

public class MyReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
    Log.w("MY_DEBUG_TAG", "onReceive"); 
    Bundle extras = intent.getExtras(); 
    if (extras != null) { 
     String state = extras.getString(TelephonyManager.EXTRA_STATE); 
     Log.w("MY_DEBUG_TAG", state); 
     if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
      String phoneNumber = extras 
        .getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 
      Log.w("MY_DEBUG_TAG", phoneNumber); 
     } 
    } 

} 
} 

Und das ist mein Manifest:

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

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme" > 
    <activity android:name=".MainActivity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <receiver android:name="MyReceiver" 
     android:enabled="true" 
     android:exported="false" 
     > 
     <intent-filter> 
      <action 
       android:name="android.intent.action.PHONE_STATE" > 
      </action> 
     </intent-filter> 
    </receiver> 
</application> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

Und mainActivity:

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 
+0

Diese Absichten nicht direkt in M. einen Blick auf ‚Runtime Berechtigungen‘ Take verwendet werden können. – Shaishav

Antwort

1

Sie müssen dieändernzu true, so dass Ihr Receiver in andere Apps exportiert wird.
Wenn Sie eine SecurityException in Marshmallow erhalten, suchen Sie nach einem this guide.