java - 在 receive() 方法上获取按钮的操作,该方法是广播接收器的一种方法,但它显示为 null

标签 java android android-intent

我通过 receive() 方法上的 getaction 获取按钮的操作,该方法是广播接收器的一种方法,但它的值是 null,请告诉我我在此做什么获取一个不为空的值 +我的通知方法如下

private void Notify(String notificationTitle, String notificationMessage) 
    {
        String ns=Context.NOTIFICATION_SERVICE;
        NotificationManager notificationManager=(NotificationManager)getSystemService(ns);
        @SuppressWarnings("deprecation")
        Notification notification=new Notification(R.drawable.bg,"Time",System.currentTimeMillis());
        RemoteViews notificationView=new RemoteViews(getPackageName(),R.layout.main);
        Intent notificationIntent=new Intent(this,PlayerAudioActivity.class);
        PendingIntent pendingNotificationIntent=PendingIntent.getActivity(this, 0, notificationIntent, 0);

        notification.contentView=notificationView;
        notification.flags|=Notification.FLAG_NO_CLEAR;
        //supposed button call intent
        Intent switchIntent=new Intent(this,MyReceiver.class);
        PendingIntent pendingIntent=PendingIntent.getBroadcast(this, 0, switchIntent, 0);
        notificationView.setOnClickPendingIntent(R.id.btnPrevious, pendingIntent);
        notificationManager.notify(1, notification);
    }

-我的广播接收器类如下

public class MyReceiver 
extends BroadcastReceiver {

    private static final String TAG = "waaaawoooooooooOOOOOOjnjkhdfku";

    public void onReceive(Context context, Intent intent) {
         final String action=intent.getAction();
        // if(AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)){
        Log.d(TAG, ""+action);
//           Bundle extras=intent.getExtras();
//           String ieString=extras.getString("Locale");
    //       try{
//               final int Appwidgid=extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,AppWidgetManager.INVALID_APPWIDGET_ID);
//               if(Appwidgid!=AppWidgetManager.INVALID_APPWIDGET_ID)
//               {
//                   this.onDeleted(context, new int[] { Appwidgid });
//               }
//            else {
//                onReceive(context, intent);
//                 }
//              context.startService(new Intent(context,PlayerAudioActivity.class));
//              Log.i(TAG,"Starting Service ConnectivityListener");
//          }catch(Exception e){
//              Log.e(TAG,e.toString());
//          }
//       }
    }

    private void onDeleted(Context context, int[] is) {
        // TODO Auto-generated method stub

    }

}

+ list 文件如下

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.Audio.audioplayer"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
       <receiver android:name=".MyReceiver" android:enabled="true">

 <intent-filter>        
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/><action   
android:name="android.net.conn.CONNECTIVITY_CHANGE"/><action  
android:name="android.net.conn.DATA_ACTIVITY_CHANGE"/>
</intent-filter>
</receiver>
        <activity
            android:name="com.Audio.audioplayer.PlayerAudioActivity"
            android:label="@string/app_name" 
            android:screenOrientation="portrait"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
                <data android:scheme="tel" />
            </intent-filter>
        </activity>
        <activity
            android:name=".PlayListActivity"
            android:label="@string/app_name" 
            android:screenOrientation="portrait" 
            >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.Audio.audioplayer.PlayerAudioActivity" />

        </activity>
    </application>

</manifest>

最佳答案

正如 adamp 中提到的 post您无法访问针对您未设置的 Intent 的操作:

{...}
//supposed button call intent
Intent switchIntent=new Intent(this, MyReceiver.class);
PendingIntent pendingIntent=PendingIntent.getBroadcast(this, 0, switchIntent, 0);
{...}

您必须使用 setAction() 将指定的操作添加到该 Intent 中.

类似这样的事情:

{...}
Intent switchIntent=new Intent(this, MyReceiver.class);
switchIntent.setAction("YOUR_ACTION");
PendingIntent pendingIntent=PendingIntent.getBroadcast(this, 0, switchIntent, 0);
{...}

ps:只是伪代码

关于java - 在 receive() 方法上获取按钮的操作,该方法是广播接收器的一种方法,但它显示为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23269728/

相关文章:

android - 从电子邮件中的链接启动我的应用程序,但链接被 gmail 过滤,我该怎么办?请求帮忙 !

android - 如何为请求设置标签并从 Response Volley 异步请求中获取?

java - 在 Java 中 File.canExecute() 究竟做了什么?

android - IDEA 社区版和终极版有什么区别?

android - 在 youtube api v3 (Android) 中使用视频 ID 获取视频标题

java - Kitkat 上安装的崩溃生命周期组件

android - 通知未打开正确的 Activity

java - 原始类型和性能

java - JdbcSQL异常 : Unique index or primary key violation

java - 单元测试Springboot MockMvc返回403 Forbidden