2016-07-27 10 views
1

着信コールに応答する必要があるAndroid 4.1(16 API)のアプリケーションを作成しましたが、それは起こりません。私は多くのチュートリアルを見て、それは間違いを作るのは簡単すぎるが...私はAndroidスタジオ1.4を使用しています。 apkの電話はAndroid 6.0.1のNexus 6です。私が間違って何を考えている?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

は、「実行時の権限」を見てみましょう訪問詳細に理解するために、実行時に与えなければなりません。 – Shaishav

答えて

1

あなたはを変更する必要があります〜trueあなたのレシーバーはあなた以外の他のアプリにもエクスポートされます。
マシュマロでSecurityExceptionが発生した場合は、this guideと表示されます。マシュマロ危険なアクセス許可