首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从android应用程序的后台启动pandora

从android应用程序的后台启动pandora
EN

Stack Overflow用户
提问于 2014-04-17 02:13:47
回答 1查看 1.3K关注 0票数 0

我有一个android应用程序,通过语音命令启动潘多拉。它工作得很好,但是我希望活动切换回我的应用程序,让pandora在后台运行。我用这段代码启动潘多拉:

代码语言:javascript
复制
PackageManager pm = getPackageManager()
   try{
       String packageName = "com.pandora.android";
       launchIntent = pm.getLaunchIntentForPackage(packageName);

       startActivity(launchIntent);
      }
   catch (Exception e1)
   {}

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-04-17 02:55:41

乍一看,我认为您可以使用Activity.startActivities,如下所示:

代码语言:javascript
复制
    final PackageManager pm = getPackageManager();
    try {
        startActivities(new Intent[] {
                pm.getLaunchIntentForPackage("com.pandora.android"),
                pm.getLaunchIntentForPackage("com.your.packagename")
        });
    } catch (final Exception ignored) {
        // Nothing to do
    } finally {
        finish();
    }

但是潘多拉需要一点时间来开始播放,在这种情况下,我认为最好的办法是设置一个NotificationListenerService,等待潘多拉的通知发布,这意味着播放已经启动,然后启动你的应用程序。

下面是一个例子:

代码语言:javascript
复制
public class PandoraNotificationListener extends NotificationListenerService {

    @Override
    public void onNotificationPosted(StatusBarNotification sbn) {
        final String packageName = sbn.getPackageName();
        if (!TextUtils.isEmpty(packageName) && packageName.equals("com.pandora.android")) {
            startActivity(new Intent(this, YourActivity.class)
                    .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
        }
    }

    @Override
    public void onNotificationRemoved(StatusBarNotification sbn) {
        // Nothing to do
    }

}

In AndroidManifest

代码语言:javascript
复制
<service
    android:name="your.path.to.PandoraNotificationListener"
    android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" >
    <intent-filter>
        <action android:name="android.service.notification.NotificationListenerService" />
    </intent-filter>
</service>

此外,您的用户还需要使您的应用程序能够侦听通知,以便在以下位置发布:

  • 设置->安全性->通知访问

但是,您可以使用下面的Intent直接引导用户

代码语言:javascript
复制
startActivity(new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23123427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档