当前位置: 首页 > 面试题库 >

用户单击通知时如何启动活动?

何琨
2023-03-14
问题内容

我试图将我在教程中找到的一些代码转换为自己使用。最初,当用户单击我的应用程序生成的通知时,该代码启动了系统联系人列表。我正在尝试自己启动一个Activity,而不是启动联系人列表,但是它不起作用。更具体地说,什么也没有发生。没有错误,我Activity也不会加载。单击后,通知窗口消失,原始窗口Activity仍然可见。

这是我的代码:

public class MyBroadcastReceiver extends BroadcastReceiver {
    private NotificationManager mNotificationManager;
    private int SIMPLE_NOTFICATION_ID;

    public void onReceive(Context context, Intent intent){
        Bundle extras = intent.getExtras();

        String deal = (String) extras.get("Deal");
        String title = "Deal found at " + (String) extras.get("LocationName");

        mNotificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notifyDetails = new Notification(R.drawable.icon, title,System.currentTimeMillis());

        Class ourClass;
        try {
            ourClass = Class.forName("com.kjdv.gpsVegas.ViewTarget");
            Intent startMyActivity = new Intent(context, ourClass);

            PendingIntent myIntent = PendingIntent.getActivity(context, 0,startMyActivity, 0);
            notifyDetails.setLatestEventInfo(context, title, deal, myIntent);
            notifyDetails.flags |= Notification.FLAG_AUTO_CANCEL;
            notifyDetails.flags |= Notification.DEFAULT_SOUND;
            mNotificationManager.notify(SIMPLE_NOTFICATION_ID, notifyDetails);
        }
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

这是我在AndroidManifext.xml文件中的条目…

  <activity android:name=".ViewTarget" android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.kjdv.gpsVegas.ViewTarget" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
   </activity>

这是我Activity要启动的…

public class ViewTarget extends ListActivity {
    public ListAdapter getListAdapter() {
        return super.getListAdapter();
    }

    public ListView getListView() {
        return super.getListView();
    }

    public void setListAdapter(ListAdapter adapter) {
        super.setListAdapter(adapter);
    }

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.locations);
        Log.v("db", "Inside ViewTarget");
    }
}

问题答案:

我解决了这个问题。我忘记在清单文件的活动声明中包括包名称。

错误:

activity android:name=".ViewTarget" android:label="@string/app_name"

正确:

activity android:name="com.kjdv.gpsVegas.ViewTarget" android:label="@string/app_name"


 类似资料:
  • 我正在编写一个使用fire base来实现通知的应用程序。在我的Mainactive中,我有一个带有一些url的WebView,但问题是当用户单击通知时,我想在WebView中使用不同的url打开MainActiviy。我读了很多,我在意图中添加了一个捆绑包(在单击通知时打开Mainactive),它会生成所需的url。但是当我单击通知时,Mainactive会重新启动,我的意思是,它不会转到on

  • 现在,我需要服务器向这个活动传递一个额外的参数,一个,这样我就可以显示与通知相关联的所需细节。就像电子邮件应用程序一样,当我们点击通知时会打开指定电子邮件的详细信息。 我怎么能这么做?

  • 我目前遇到以下问题: 我已经实现了自定义FirebaseMessagingService,并且覆盖了方法onMessageReceived()。此外,当应用程序在后台时,我从getExtras()获取捆绑包 我需要通知内容,以便在db中本地保存 发生了什么: 当应用程序处于后台时,从Firebase控制台发送3个通知 创建了3个状态栏通知 单击其中一个- 你能帮忙吗? 启动器活动代码: 自定义Fi

  • 我有一个带有通知的应用程序,如果我单击它们,就会打开某个活动。我想要的是,如果我点击通知,活动已经打开,它不是重新开始,但只是出现在前面。 我可以用标志来管理它吗?还是我应该在SharedPreferences中存储一个变量来检查它是否已打开? 谢谢!

  • 当我点击listview项时,我试图启动一个活动。但是当我运行程序时,我得到了一些错误,比如: list_layout.xml

  • 我有一个活动正在执行一些下载功能。该活动将弹出一个进度对话框,在下载时禁用用户交互,并创建一个通知进度。 设置意向标志