Android:覆盖 Intent.ACTION_VIEW 中的 onKeyUp 和 onKeyDown

发布于 2024-12-28 11:11:08 字数 1358 浏览 5 评论 0原文

我有一个 Android 选项卡式应用程序,用于显示音乐图表(例如 ChartActivity),每个图表又显示音乐曲目列表(例如 EntryActivity)。点击音乐曲目的每个条目将启动 YouTube 应用程序(默认操作)。也就是说,在 EntryActivity 的 list.setOnItemClickListener 中,我进行调用:(

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(selectedSongUrl));
TabGroupActivity parentActivity = (TabGroupActivity)getParent();
parentActivity.startChildActivity("YouTube", intent);

是的,我使用 ActivityGroup 和 TabActivity。)

问题是,当我从 YouTube 屏幕上点击后退按钮时,活动视图不会返回到 EntryActivity,而是到图表活动。我想,这是因为我无法在 YouTube 屏幕中覆盖 onKeyUp 和 onKeyDown ,以便我可以进一步将事件传递给父 Activity:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        //preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

// Overrides the default implementation for KeyEvent.KEYCODE_BACK 
// so that all systems call onBackPressed().
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        TabGroupActivity parentActivity = (TabGroupActivity)getParent();
        parentActivity.onBackPressed();
        return true;
    }
    return super.onKeyUp(keyCode, event);
} 

有没有办法让 EntryActivity 知道从 Intent.ACTION_VIEW 发送的回调事件?

I have an Android tabbed application that displays music charts (say, ChartActivity), each of which in turn displays a list of music tunes (say, EntryActivity). Tapping on each entry of music tunes will launch, e.g., a YouTube app (default actions). That is, in list.setOnItemClickListener of EntryActivity, I make calls:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(selectedSongUrl));
TabGroupActivity parentActivity = (TabGroupActivity)getParent();
parentActivity.startChildActivity("YouTube", intent);

(Yes, I use ActivityGroup and TabActivity.)

The problem is that when I tab the back button from the YouTube screen, the active view does not come back to EntryActivity, but to ChartActivity. I guess, this is because I could not override onKeyUp and onKeyDown in YouTube screen so that I can further pass the event to the parent activity:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        //preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

// Overrides the default implementation for KeyEvent.KEYCODE_BACK 
// so that all systems call onBackPressed().
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        TabGroupActivity parentActivity = (TabGroupActivity)getParent();
        parentActivity.onBackPressed();
        return true;
    }
    return super.onKeyUp(keyCode, event);
} 

Is there any way to let EntryActivity know callback events sent from Intent.ACTION_VIEW?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

多彩岁月 2025-01-04 11:11:08

我对您的应用程序的设置有点困惑...这是传统的选项卡式活动,其中每个选项卡显示自己的活动(例如 ChartActivity 和 EntryActivity 是选项卡)?

如果是这样,您可以在 TabGroupActivity 中执行以下操作:

  1. 重写 onPause() 以将当前活动选项卡的索引保存在 SharedPreferences 中。
  2. 重写 onResume() 以读取该首选项(如果存在)并切换到您上次进入的选项卡。
  3. 重写 onDestroy() 并删除该首选项,以便下次启动活动时在正确的选项卡中启动。

如果您的活动不是这样设置的,请详细解释一下如何设置。

I'm a little confused on the setup of your app... Is this a traditional tabbed activity where each tab displays its own activity (e.g. ChartActivity and EntryActivity are tabs)?

If so, you could do the following in your TabGroupActivity:

  1. Override onPause() to save the index of the currently active tab in SharedPreferences.
  2. Override onResume() to read in that preference (if it exists) and switch to the tab that you were last in.
  3. Override onDestroy() and remove that preference so the next time you launch the activity you start in the correct tab.

If that is not how your activity is set up, please explain a little more about how things are set up.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文