我有一个android应用程序,通过语音命令启动潘多拉。它工作得很好,但是我希望活动切换回我的应用程序,让pandora在后台运行。我用这段代码启动潘多拉:
PackageManager pm = getPackageManager()
try{
String packageName = "com.pandora.android";
launchIntent = pm.getLaunchIntentForPackage(packageName);
startActivity(launchIntent);
}
catch (Exception e1)
{}有什么想法吗?
发布于 2014-04-17 02:55:41
乍一看,我认为您可以使用Activity.startActivities,如下所示:
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,等待潘多拉的通知发布,这意味着播放已经启动,然后启动你的应用程序。
下面是一个例子:
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
<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直接引导用户
startActivity(new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"));https://stackoverflow.com/questions/23123427
复制相似问题