मैंने एंड्रॉइडमैनीफेस्ट.एक्सएमएल में ब्रॉडकास्ट रिसीवर (एक्शन_हेडसेट_प्लग) घोषित किया और ब्रॉडकास्टैंडर क्लास को ब्रॉडकास्ट रिसीवर को कार्यान्वित किया। मैं डिवाइस पर एपीके चलाता हूं और रिसीवर आग नहीं लगाता है। हालांकि, जब मैं गतिविधि में रजिस्टर रिसीवर() का उपयोग करता हूं तो यह सही तरीके से काम करता है। क्या मुझे AndroidManifest.xml में कुछ याद आती है?[एंड्रॉइड] ब्रॉडकास्ट रिसीवर (एक्शन_हेडसेट_प्लग) फायरिंग
यह AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="irdc.Earphone_test"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="9" />
<uses-permission android:name="android.permission.ACTION_HEADSET_PLUG"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:enabled="true" android:name="BroadcastHandler">
<intent-filter>
<action android:name="android.intent.ACTION_HEADSET_PLUG"></action>
</intent-filter>
</receiver>
<activity android:name=".Earphone_testActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
है यह रिसीवर कोड
public class BroadcastHandler extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)){
String mes;
int state = intent.getIntExtra("state", 4);
if(state == 0){
mes ="out";
}else if(state == 1){
mes ="in";
}else {
mes ="others";
}
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Headset broadcast");
builder.setMessage(mes);
builder.setPositiveButton("Okey-dokey", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
}
}
ACTION_HEADSET_PLUG नहीं है android.permission – shim