- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码来启动一个文件:
try {
path = fileJsonObject.getString("filePath");
if (path.indexOf("/") == 0) {
path = path.substring(1, path.length());
}
path = root + path;
final File fileToOpen = new File(path);
if (fileToOpen.exists()) {
if (fileToOpen.isFile()) {
Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW);
myIntent.setData(Uri.parse(path));
final String pathToCheck = new String(path);
pathToCheck.toLowerCase();
if (pathToCheck.endsWith(".wav") || pathToCheck.endsWith(".ogg") || pathToCheck.endsWith(".mp3")
|| pathToCheck.endsWith(".mid") || pathToCheck.endsWith(".midi") || pathToCheck.endsWith(".amr")) {
myIntent.setType("audio/*");
} else if (pathToCheck.endsWith(".mpg") || pathToCheck.endsWith(".mpeg") || pathToCheck.endsWith(".3gp")
|| pathToCheck.endsWith(".mp4")) {
myIntent.setType("video/*");
} else if (pathToCheck.endsWith(".jpg") || pathToCheck.endsWith(".jpeg") || pathToCheck.endsWith(".gif")
|| pathToCheck.endsWith(".png") || pathToCheck.endsWith(".bmp")) {
myIntent.setType("image/*");
} else if (pathToCheck.endsWith(".txt") || pathToCheck.endsWith(".csv") || pathToCheck.endsWith(".xml")) {
Log.i("txt","Text fileeeeeeeeeeeeeeeeeeeeeeeeee");
myIntent.setType("text/*");
} else if (pathToCheck.endsWith(".gz") || pathToCheck.endsWith(".rar") || pathToCheck.endsWith(".zip")) {
myIntent.setType("package/*");
} else if (pathToCheck.endsWith(".apk")) {
myIntent.setType("application/vnd.android.package-archive");
}
((Activity) context).startActivityForResult(myIntent, RequestCodes.LAUNCH_FILE_CODE);
} else {
errUrl = resMsgHandler.errMsgResponse(fileJsonObject,
"Incorrect path provided. please give correct path of file");
return errUrl;
}
} else {
errUrl = resMsgHandler.errMsgResponse(fileJsonObject,"Incorrect path provided. please give correct path of file");
return errUrl;
}
} catch (Exception e) {
e.printStackTrace();
Log.i("err","Unable to launch file" + " " + e.getMessage());
errUrl = resMsgHandler.errMsgResponse(fileJsonObject,
"Unable to launch file" + " " + e.getMessage());
return errUrl;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
try {
if (requestCode == RequestCodes.LAUNCH_FILE_CODE) {
if (resultCode == RESULT_CANCELED) {
Log.i("err","errrrrrrrrrrrrrrrrrrrrrrrrrrrrrr");
String errUrl = responseMsgHandler.errMsgResponse(FileHandler.fileJsonObject, "Unable to launch file");
mWebView.loadUrl(errUrl);
} else if (resultCode == RESULT_OK) {
String successUrl = responseMsgHandler.launchfileResponse(FileHandler.fileJsonObject);
mWebView.loadUrl(successUrl);
}
Amd 结果 ctrl 位于“if (resultCode == RESULT_CANCELED)”。那么如何成功推出呢?
可能简而言之,我正在这样做:
final File fileToOpen = new File(path);
if (fileToOpen.exists()) {
if (fileToOpen.isFile()) {
Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW);
myIntent.setData(Uri.parse(path));
if (pathToCheck.endsWith(".txt") || pathToCheck.endsWith(".csv") || pathToCheck.endsWith(".xml")) {
Log.i("txt","Text fileeeeeeeeeeeeeeeeeeeeeeeeee");
myIntent.setType("text/*");
startActivityForResult(myIntent, RequestCodes.LAUNCH_FILE_CODE);
和
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RequestCodes.LAUNCH_FILE_CODE) {
if (resultCode == RESULT_CANCELED) {
Log.i ("err","errrrrrrrrrrrrrrrrrrrrrrrrrrrrrr");
String errUrl = responseMsgHandler.errMsgResponse(FileHandler.fileJsonObject, "Unable to launch file");
mWebView.loadUrl(errUrl);
} else if (resultCode == RESULT_OK) {
String successUrl = responseMsgHandler.launchfileResponse(FileHandler.fileJsonObject);
mWebView.loadUrl(successUrl);
}
我的错误日志:
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cooliris.media/com.cooliris.media.Gallery}: java.lang.NullPointerException
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at android.os.Handler.dispatchMessage(Handler.java:99)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at android.os.Looper.loop(Looper.java:123)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at java.lang.reflect.Method.invokeNative(Native Method)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at java.lang.reflect.Method.invoke(Method.java:521)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at dalvik.system.NativeStart.main(Native Method)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): Caused by: java.lang.NullPointerException
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at com.cooliris.media.Gallery.onCreate(Gallery.java:305)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-04 12:33:08.635: ERROR/AndroidRuntime(3757): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
谢谢
斯内哈
最佳答案
试试这个
if (item_ext.equalsIgnoreCase(".mp3") ||
item_ext.equalsIgnoreCase(".m4a")||
item_ext.equalsIgnoreCase(".mp4")) {
if(mReturnIntent) {
returnIntentResults(file);
} else {
Intent i = new Intent();
i.setAction(android.content.Intent.ACTION_VIEW);
i.setDataAndType(Uri.fromFile(file), "audio/*");
startActivity(i);
}
}
/*photo file selected*/
else if(item_ext.equalsIgnoreCase(".jpeg") ||
item_ext.equalsIgnoreCase(".jpg") ||
item_ext.equalsIgnoreCase(".png") ||
item_ext.equalsIgnoreCase(".gif") ||
item_ext.equalsIgnoreCase(".tiff")) {
if (file.exists()) {
if(mReturnIntent) {
returnIntentResults(file);
} else {
Intent picIntent = new Intent();
picIntent.setAction(android.content.Intent.ACTION_VIEW);
picIntent.setDataAndType(Uri.fromFile(file), "image/*");
startActivity(picIntent);
}
}
}
/*video file selected--add more video formats*/
else if(item_ext.equalsIgnoreCase(".m4v") ||
item_ext.equalsIgnoreCase(".3gp") ||
item_ext.equalsIgnoreCase(".wmv") ||
item_ext.equalsIgnoreCase(".mp4") ||
item_ext.equalsIgnoreCase(".ogg") ||
item_ext.equalsIgnoreCase(".wav")) {
if (file.exists()) {
if(mReturnIntent) {
returnIntentResults(file);
} else {
Intent movieIntent = new Intent();
movieIntent.setAction(android.content.Intent.ACTION_VIEW);
movieIntent.setDataAndType(Uri.fromFile(file), "video/*");
startActivity(movieIntent);
}
}
}
/*zip file */
else if(item_ext.equalsIgnoreCase(".zip")) {
if(mReturnIntent) {
returnIntentResults(file);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
AlertDialog alert;
mZippedTarget = mFileMag.getCurrentDir() + "/" + item;
CharSequence[] option = {"Extract here", "Extract to..."};
builder.setTitle("Extract");
builder.setItems(option, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch(which) {
case 0:
String dir = mFileMag.getCurrentDir();
mHandler.unZipFile(item, dir + "/");
break;
case 1:
mDetailLabel.setText("Holding " + item +
" to extract");
mHoldingZip = true;
break;
}
}
});
alert = builder.create();
alert.show();
}
}
/* gzip files, this will be implemented later */
else if(item_ext.equalsIgnoreCase(".gzip") ||
item_ext.equalsIgnoreCase(".gz")) {
if(mReturnIntent) {
returnIntentResults(file);
} else {
//TODO:
}
}
/*pdf file selected*/
else if(item_ext.equalsIgnoreCase(".pdf")) {
if(file.exists()) {
if(mReturnIntent) {
returnIntentResults(file);
} else {
Intent pdfIntent = new Intent();
pdfIntent.setAction(android.content.Intent.ACTION_VIEW);
pdfIntent.setDataAndType(Uri.fromFile(file),
"application/pdf");
try {
startActivity(pdfIntent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "Sorry, couldn't find a pdf viewer",
Toast.LENGTH_SHORT).show();
}
}
}
}
/*Android application file*/
else if(item_ext.equalsIgnoreCase(".apk")){
if(file.exists()) {
if(mReturnIntent) {
returnIntentResults(file);
} else {
Intent apkIntent = new Intent();
apkIntent.setAction(android.content.Intent.ACTION_VIEW);
apkIntent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(apkIntent);
}
}
}
/* HTML file */
else if(item_ext.equalsIgnoreCase(".html")) {
if(file.exists()) {
if(mReturnIntent) {
returnIntentResults(file);
} else {
Intent htmlIntent = new Intent();
htmlIntent.setAction(android.content.Intent.ACTION_VIEW);
htmlIntent.setDataAndType(Uri.fromFile(file), "text/html");
try {
startActivity(htmlIntent);
} catch(ActivityNotFoundException e) {
Toast.makeText(this, "Sorry, couldn't find a HTML viewer",
Toast.LENGTH_SHORT).show();
}
}
}
}
/* text file*/
else if(item_ext.equalsIgnoreCase(".txt")) {
if(file.exists()) {
if(mReturnIntent) {
returnIntentResults(file);
} else {
Intent txtIntent = new Intent();
txtIntent.setAction(android.content.Intent.ACTION_VIEW);
txtIntent.setDataAndType(Uri.fromFile(file), "text/plain");
try {
startActivity(txtIntent);
} catch(ActivityNotFoundException e) {
txtIntent.setType("text/*");
startActivity(txtIntent);
}
}
}
}
/* generic intent */
else {
if(file.exists()) {
if(mReturnIntent) {
returnIntentResults(file);
} else {
Intent generic = new Intent();
generic.setAction(android.content.Intent.ACTION_VIEW);
generic.setDataAndType(Uri.fromFile(file), "text/plain");
try {
startActivity(generic);
} catch(ActivityNotFoundException e) {
Toast.makeText(this, "Sorry, couldn't find anything " +
"to open " + file.getName(),
Toast.LENGTH_SHORT).show();
}
}
}
}
resultCode 必须等于 RESULT_CANCELED,因为退出该 Activity 的唯一方法是按手机上的后退按钮 这会发布一个取消的结果代码,而不是一个好的结果代码
关于android - 使用 ACTION_VIEW Intent Action 启动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10005083/
如果我想为收藏创建一个 Intent 。 如果用户问“他最喜欢什么”,它会显示一些建议芯片 因此它会调用与该芯片相关的任何后续 Intent 。 最喜欢的饮料 最喜欢的食物 最喜欢的电影等 我还想直接
我确信有一些显而易见的事情,但还没有找到解决这个简单问题的方法。错误是在用户猜出正确答案时尝试启动另一个 Activity 的主要 Activity : Error:(85, 23) Unresolv
public class MainActivity extends Activity { Button b; //FrameLayout fl; @Override p
我对 intentService 有点困惑。文档说,如果您向 intentService 发送多个任务( Intent ),那么它将在一个单独的线程上一个接一个地执行它们。我的问题是 - 是否可以同时
我正在尝试从其他应用程序获取 mime 类型 text/plain 的 Intent 并将该文本存储在字符串类型的变量中。它在 onCreate 方法中工作正常,但是当我使用 singleTask 作
我想知道,2个代码有什么区别? newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
如何设置我的 Activity 以响应任何类型的共享 Intent 。 我试过:- 但是这不起作用,我已经阅读了http://developer.android.co
鉴于子类具有不同的上下文以及在单击监听器后启动的不同 Activity ,父类(super class)中的代码 Intent Intent=new Intent(context,Activity.c
更新#1:更多信息添加到这篇文章的末尾 我是 Android 开发和测试的新手。 我有 3 个 Espresso 测试。第一个测试通过,但第二个不会运行,因为在第二个测试之前调用 setUp() 方法
我是 Espresso UI 测试的新手。 我在运行测试时遇到这个错误(ADT Eclipse IDE)。 该应用程序已经开发完成,并且在启动该应用程序时有很多请求正在进行。无法重写应用程序。但我需要
因此,尝试创建一个我认为是基本简历应用程序的应用程序。我有两个类(class),都有同样的问题。它说它“无法解析符号 Intent ” 谷歌部分做了,但没有任何意义.. 这是我的代码。 MainAct
我正在尝试将 user_id 值从一个 Intent 传递到另一个 Intent。我知道这是一个非常简单的过程,而且我已经这样做了好几次了。但对于下面的代码,我有点困惑。 我需要将 user_id 值
这是我将值传递给名为 choice 的类的主要 Activity 。 @Override public void onClick(View v) { // TODO Auto-generated me
我正在寻找一个 Android Intent 来翻译文本,我发现了这个: Google Translate Activity not working anymore 但我想在任务管理器中使用它。我真的
可以设置多个启动 Intent ,例如,当用户点击通知时。 让我解释一下我的具体问题: 我有一个带通知的应用程序。每个通知都会打开一个不同的 Activity (也有不同的附加功能)。 现在我想提取有
我有一个 Intent launchIntent = packageManagerForListener.getLaunchIntentForPackage(packagesForAdapter[po
List targetedShareIntents = new ArrayList(); Intent shareIntent = new Intent(android.content.Intent.
所以我试图在选择列表中的项目后启动一个新 Activity ......根据我所读的内容非常基本。我也在尝试在附加功能中发送一个值。所以我可以选择列表中的项目,然后新 Activity 开始,extr
有没有一种方法可以将一个Intent bundle 从一个 Intent 传递到另一个 Intent ,而不必提取包并单独处理每个额外的 Intent ? 例子: intent2.setExtras(
这个问题在这里已经有了答案: Android 5.0 (L) Service Intent must be explicit in Google analytics (11 个答案) 关闭 6 个月
我是一名优秀的程序员,十分优秀!