2011-04-13 83 views
1

我试图创建简单地在SD卡上打开文件的程序。我试着打开mp3,mp4和apk--下面的代码总是意外崩溃。关于“file://”的startActivity链接崩溃

String _path = "file:///sdcard/1.apk"; 

    Uri outputFileUri = Uri.parse(_path); 
    Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_VIEW); 

市场联系也崩溃。但是当我设置_path =“http://google.com” - 浏览器正常打开。我怎样才能使这个代码工作?

回答

0

如果你想安装的APK,您需要使用以下命令:

String fileName = Environment.getExternalStorageDirectory() + "/1.apk"; 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive"); 
startActivity(intent); 

如果你想启动的应用程序(安装后),则:

Intent intent = new Intent(); 
intent.setClassName("com.pkg.addr", "com.pkg.addr.MainActivity"); 
startActivity(intent); 

如果您尝试启动播放器播放mp3文件:

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

希望有所帮助。

+0

太棒了!作品!谢谢! 所以我需要总是定义MIME类型?不要让android让用户选择他想对文件做什么? – POMATu 2011-04-13 15:56:54

+0

Android确实允许用户选择哪个应用程序应该处理文件,在他手机上的那些能够处理该文件的应用程序中。 – rajath 2011-04-13 16:06:45

+0

但是,当我没有设置类型,应用程序崩溃。为什么android在类型未设置时不显示标准的openfile对话框? – POMATu 2011-04-13 16:34:01