在我的应用程序中,我需要处理物理按钮事件,例如音量按钮点击.为此,我使用audiomanager的registerMediaButtonEventReceiver方法.有一个
article与我的情况有关,虽然我无法让它运作.
这是我正在使用的代码:
public class VolumeBroadcastActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); AudioManager manager = (AudioManager) getSystemService(AUdio_SERVICE); manager.registerMediaButtonEventReceiver(new ComponentName(getPackageName(),RemoteControlReceiver.class.getName())); } public class RemoteControlReceiver extends BroadcastReceiver { @Override public void onReceive(Context context,Intent intent) { Toast.makeText(VolumeBroadcastActivity.this,"1",1).show(); if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) { } } } } <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="localhost.volume.broadcast" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".VolumeBroadcastActivity" 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="RemoteControlReceiver"> <intent-filter> <action android:name="android.intent.action.MEDIA_BUTTON" /> </intent-filter> </receiver> </application> </manifest>
解决方法
您的RemoteControlReceiver类是VolumeBroadcastActivity的内部类.你的清单没有这么说,我认为不行.使它成为常规类,并在其android:name之前加上一个点.