2016-07-27 56 views
1

我为Android 4.1(16 API)编写了应用程序,该应用程序应该响应来电,但不会发生。我看到很多教程,它太简单了,以至于没有任何错误,但是...我使用Android Studio 1.4。与apk的电话是Nexus 6与android 6.0.1。任何想法我做错了什么?ANDROID BroadcastReceiver不会触发

这是一个BroadcastReceiver类:

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); 
     } 
    } 

} 
} 

这是我的清单:

<?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" /> 

而且mainActivity:

public class MainActivity extends AppCompatActivity { 

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

那些意图不能在M.直接使用看一看“运行许可”。 – Shaishav

回答

1

您需要更改android:exported="false"true,这样您的接收器将会被导出到除您之外的其他应用程序。
如果您在棉花糖中看到SecurityException,请看this guide