2011-05-04 221 views
47

這是我的代碼播放錄製的音頻3GP文件無活動處理意向:android.intent.action.VIEW

Intent intent = new Intent(android.content.Intent.ACTION_VIEW); 
     Uri data = Uri.parse(path); 
     intent.setDataAndType(data, "audio/mp3"); 
     startActivity(intent); 

,但同時我的HTC設備上運行它(的Android 2.2 Froyo)顯示異常

05-04 16:37:37.597: WARN/System.err(4065): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/mnt/sdcard/audio-android.3gp typ=audio/mp3 } 
05-04 16:37:37.597: WARN/System.err(4065):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1567) 
05-04 16:37:37.597: INFO/ActivityManager(92): Starting activity: Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/mnt/sdcard/audio-android.3gp typ=audio/mp3 } 
05-04 16:37:37.607: WARN/System.err(4065):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1537) 
05-04 16:37:37.607: WARN/System.err(4065):  at android.app.Activity.startActivityForResult(Activity.java:2858) 
05-04 16:37:37.607: WARN/System.err(4065):  at android.app.Activity.startActivity(Activity.java:2964) 
05-04 16:37:37.607: WARN/System.err(4065):  at com.ey.camera.AudioRecorder.playAudio(AudioRecorder.java:244) 
05-04 16:37:37.607: WARN/System.err(4065):  at com.ey.camera.AudioRecorder$4.onClick(AudioRecorder.java:225) 
05-04 16:37:37.607: WARN/System.err(4065):  at android.view.View.performClick(View.java:2408) 
05-04 16:37:37.607: WARN/System.err(4065):  at android.view.View$PerformClick.run(View.java:8817) 
05-04 16:37:37.607: WARN/System.err(4065):  at android.os.Handler.handleCallback(Handler.java:587) 
05-04 16:37:37.607: WARN/System.err(4065):  at android.os.Handler.dispatchMessage(Handler.java:92) 
05-04 16:37:37.607: WARN/System.err(4065):  at android.os.Looper.loop(Looper.java:144) 
05-04 16:37:37.607: WARN/System.err(4065):  at android.app.ActivityThread.main(ActivityThread.java:4937) 
05-04 16:37:37.607: WARN/System.err(4065):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-04 16:37:37.607: WARN/System.err(4065):  at java.lang.reflect.Method.invoke(Method.java:521) 
05-04 16:37:37.607: WARN/System.err(4065):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
05-04 16:37:37.607: WARN/System.err(4065):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
05-04 16:37:37.607: WARN/System.err(4065):  at dalvik.system.NativeStart.main(Native Method) 

在Galaxy平板其工作的罰款......請給我一個解決方案來解決這個問題

+1

難道是因爲你的文件是.3gp而你告訴系統播放的是mp3數據嗎? – Blundell 2011-05-04 11:45:51

+0

@Blundell我試着用3gp bt仍然拋出異常 – jennifer 2011-05-04 12:10:02

回答

0

我有兩個想法:

第一:如果你想播放3GP文件,你應該使用MIME類型「音頻/ 3GPP」或「音頻/ MPEG」

其次:你可以嘗試使用intent方法setData(data)沒有任何MIME類型。

希望這會有所幫助。

+0

仍然是異常05-04 17:30:30.022:WARN/System.err(4937):android.content.ActivityNotFoundException:找不到處理Intent的行爲{act = android.intent.action.VIEW dat =/mnt/sdcard/audio-android.3gp}正在顯示 – jennifer 2011-05-04 12:01:08

+0

是android支持你的3gp文件嗎? http://developer.android.com/guide/appendix/media-formats.html – Pasha 2011-05-04 12:15:40

109

URL地址必須由HTTP前面://

Uri uri = Uri.parse("www.google.com"); 
Intent intent = new Intent(Intent.ACTION_VIEW, uri); 

拋出ActivityNotFoundException。如果你預先加上「http://」,問題就解決了。

Uri uri = Uri.parse("http://www.google.com"); 

可能不會幫助OP,但我最終在這裏尋找相同的異常,也許它可以幫助別人。

+3

棒極了!該計劃是必須的。直到我將'Uri.parse()'改成'Uri.fromFile()'後,'file://'丟失了。 – Stan 2016-04-12 09:55:50

29

這是正確的做法。

try 
    { 
    Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW); 
    File file = new File(aFile.getAbsolutePath()); 
    String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString()); 
    String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); 
    myIntent.setDataAndType(Uri.fromFile(file),mimetype); 
    startActivity(myIntent); 
    } 
    catch (Exception e) 
    { 
     // TODO: handle exception 
     String data = e.getMessage(); 
    } 

您需要導入導入android.webkit.MimeTypeMap;

+0

這是很長的一段路要做:d – umerk44 2014-02-26 11:00:27

+0

用一般的異常包裝try塊中的代碼通常不是一個好主意。這裏的行爲完全沒有定義 - 你能分辨出哪些輸入一目瞭然嗎?會出現什麼例外,爲什麼?這是沒有經過徹底測試的代碼的標誌。 – jbass 2017-02-08 22:58:20

15

通過回答Maragues讓我檢查logcat輸出。顯示您傳遞給Uri的路徑需要以前綴
file:/

因爲它是存儲的本地路徑。

你也可能也想看看路徑本身。

`05-04 16:37:37.597: WARN/System.err(4065): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/mnt/sdcard/audio-android.3gp typ=audio/mp3 }` 

掛載點似乎在完整路徑中出現兩次。

+0

這似乎是正確的答案,但問題是舊的和OP是近2個月前最後看到 – Maragues 2012-08-31 07:31:41

+0

這就是我所做的。可悲的是,我找到解決方案後纔看到這個答案:) – 2013-09-04 07:34:45

+1

追加文件:/幫助我,像魅力一樣工作。 – abhilashca 2015-03-02 12:09:21

2

我有這個相同的問題,所以我在看LogCat中登錄的意圖。從Gallery中查看視頻時,它調用了相同的Intent.View意圖,但將Type設置爲「audio/*」,這解決了我的問題,並且不需要導入MimeTypeMap。例如:

Intent intent = new Intent(android.content.Intent.ACTION_VIEW); 
Uri data = Uri.parse(path); 
intent.setDataAndType(data, "audio/*"); 
startActivity(intent); 
+1

對於使用** intent.setDataAndType(data,「video/*」)**; – Nestor 2014-01-16 21:31:13

5

對於我試圖打開一個鏈接時:

Uri uri = Uri.parse("https://www.facebook.com/abc/"); 
       Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
       startActivity(intent); 

我得到了同樣的錯誤android.content.ActivityNotFoundException: No Activity found to handle Intent

問題是因爲我沒有任何應用程序可以打開網址(即 瀏覽器)安裝在我的手機中。所以在安裝瀏覽器之後, 問題就解決了。

*課:請確保至少有一個應用程序,它負責處理您呼叫的意圖*

+0

那麼我們該如何處理這種情況呢? – Nikhil 2016-10-05 13:40:16

+0

抓住它並顯示一些消息.... – erluxman 2016-10-16 07:02:43

20

如果您也越來越試圖從你的Android應用程序打開一個網頁時,這個錯誤是是因爲你的URL看起來像這樣的:

www.google.com

代替: https://www.google.comhttp://www.google.com

將此代碼添加到您的活動/片段:

public void openWebPage(String url) { 

    Uri webpage = Uri.parse(url); 

    if (!url.startsWith("http://") && !url.startsWith("https://")) { 
     webpage = Uri.parse("http://" + url); 
    } 

    Intent intent = new Intent(Intent.ACTION_VIEW, webpage); 
    if (intent.resolveActivity(getPackageManager()) != null) { 
     startActivity(intent); 
    } 
} 

只是通過你的網址openWebPage()。如果它已經與https://http://那麼前綴你是好去,否則if語句即可爲您提供

0

如果沒有傳遞正確的網頁網址與沒有瀏覽器,ActivityNotFoundException發生,所以檢查這些需求或明確處理異常。這可以解決您的問題。

public static void openWebPage(Context context, String url) { 
    try { 
     if (!URLUtil.isValidUrl(url)) { 
      Toast.makeText(context, " This is not a valid link", Toast.LENGTH_LONG).show(); 
     } else { 
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setData(Uri.parse(url)); 
      context.startActivity(intent); 
     } 
    } catch (ActivityNotFoundException e) { 
     Toast.makeText(context, " You don't have any browser to open web page", Toast.LENGTH_LONG).show(); 
    } 
} 
相關問題