I have the following code to launch a file :
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 the result ctrl is at "if (resultCode == RESULT_CANCELED)". So how to successfully launch this?
May be in short i am doing this:
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);
and
@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);
}
My err log:
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)
Thanks
Sneha
try this
resultCode must equal RESULT_CANCELED because the only way out of that activity is pressing the back button on the phone this publishes a canceled result code not an ok result code
I think for that intent you are not setting the result like
in your case may be
youractivity.setResult(RESULT_OK)
beforestartactivityforresult(intent)