I'm trying to launch an intent from my application that will play audio from a streaming server. I've got a url for that stream and I'm using bit.ly to simplify the url to launch (I've tried without bit.ly and have the same results)
intent = new Intent( Intent.ACTION_VIEW, Uri.parse( "http://bit.ly/gKltQE" ) );
intent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK ); // i tried with and without this, no luck
startActivity( intent );
The browser starts, loads up the bit.ly link, redirects to the audio link then closes and returns to my app
12-15 14:27:58.559 1259 8370 I ActivityManager: Starting activity: Intent { act=android.intent.action.VIEW dat=http://bit.ly/gKltQE flg=0x10000000 cmp=com.android.browser/.BrowserActivity (has extras) }
12-15 14:14:23.903 1259 1383 I ActivityManager: Starting activity: Intent { act=android.in开发者_如何转开发tent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=http://216.235.81.102:15532/play?now=65&membername;=&session=kxlu1:0&tag=live365&s=kxlu1&d=live365&r=0&app_id=live365:BROWSER%28pro%29 cmp=com.android.browser/.BrowserActivity }
12-15 14:14:24.387 8848 8848 D webviewglue: nativeDestroy view: 0x3bb018
12-15 14:14:24.387 1259 1600 I ActivityManager: Starting activity: Intent { act=android.intent.action.VIEW dat=http://216.235.81.102:15532/play?now=65&membername;=&session=kxlu1:0&tag=live365&s=kxlu1&d=live365&r=0&app_id=live365:BROWSER%28pro%29 typ=audio/mpeg cmp=com.android.music/.StreamStarter }
12-15 14:14:24.387 1259 1929 I ActivityManager: moveTaskToBack: 12
When I launch the same bit.ly link in the browser manually, it works fine (launches the audio streaming app):
12-15 14:26:21.403 8848 8848 D SearchDialog: launching Intent { act=android.intent.action.VIEW dat=http://bit.ly/gKltQE flg=0x10000000 cmp=com.android.browser/.BrowserActivity (has extras) }
12-15 14:26:21.411 8848 8848 I SearchDialog: Starting (as ourselves) http://bit.ly/gKltQE#Intent;action=android.intent.action.VIEW;launchFlags=0x10000000;component=com.android.browser/.BrowserActivity;S.query=http%3A%2F%2Fbit.ly%2FgKltQE;S.user_query=bit;end
12-15 14:26:21.411 1259 1259 I ActivityManager: Starting activity: Intent { act=android.intent.action.VIEW dat=http://bit.ly/gKltQE flg=0x10000000 cmp=com.android.browser/.BrowserActivity (has extras) }12-15 14:26:21.879 1259 1267 V DeviceStorageMonitorService: freeMemory=6210887680
12-15 14:26:21.879 1259 1267 V DeviceStorageMonitorService: Threshold Percentage=10
12-15 14:26:21.879 1259 1267 V DeviceStorageMonitorService: mTotalMemory = 70264913
12-15 14:26:21.879 1259 1267 I DeviceStorageMonitorService: Posting Message again
12-15 14:26:21.997 8848 8864 D dalvikvm: GC_FOR_MALLOC freed 14790 objects / 467656 bytes in 85ms
12-15 14:26:22.192 1259 1436 D dalvikvm: GC_FOR_MALLOC freed 47823 objects / 2142584 bytes in 154ms
12-15 14:26:22.208 1259 1263 I ActivityManager: Starting activity: Intent { act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=http://216.235.81.102:15532/play?now=65&membername;=&session=kxlu1:0&tag=live365&s=kxlu1&d=live365&r=0&app_id=live365:BROWSER%28pro%29 cmp=com.android.browser/.BrowserActivity }
12-15 14:26:22.676 1259 1259 I ActivityManager: Starting activity: Intent { act=android.intent.action.VIEW dat=http://216.235.81.102:15532/play?now=65&membername;=&session=kxlu1:0&tag=live365&s=kxlu1&d=live365&r=0&app_id=live365:BROWSER%28pro%29 typ=audio/mpeg cmp=com.android.music/.StreamStarter }
12-15 14:26:22.770 1259 8719 I AudioService: Remote Control registerMediaButtonEventReceiver() for ComponentInfo{com.android.music/com.android.music.MediaButtonIntentReceiver}
12-15 14:26:22.801 8217 8217 V MediaPlaybackService: reloadQueue end
12-15 14:26:22.809 8217 8217 V MediaPlaybackService: onCreate end
12-15 14:26:22.809 8217 8217 V MediaPlaybackService: onStartCommand end
I've tried fiddling with various intent.setFlags parameters but to no avail. Maybe a permissions issue? Or something to do with how I'm calling startActivity?
Not a permissions issue, it's just the BrowserActivity ending prematurely, maybe because there's no current tab. Best thing to do is to give an extra clue to the Intent resolver that it's not actually the Browser that should be handling the data:
intent.setType("audio/mpeg");
No other flags are needed... Sound Player (or your media player of choice) will now handle it.
精彩评论