/*
* Copyright � 2016 TIBCO Software,Inc.All rights reserved.
* http://community.jaspersoft.com/project/jaspermobile-android
*
* Unless you have purchased a commercial license agreement from TIBCO Jaspersoft,
* the following license terms apply:
*
* This program is part of TIBCO Jaspersoft Mobile for Android.
*
* TIBCO Jaspersoft Mobile is free software:you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation,either version 3of the License,or
* (at your option)any later version.
*
* TIBCO Jaspersoft Mobile is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY;without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with TIBCO Jaspersoft Mobile for Android.If not,see
* <http://www.gnu.org/licenses/lgpl>.
*/
package com.jaspersoft.android.jaspermobile.activities.file;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.jaspersoft.android.jaspermobile.R;
import org.androidannotations.annotations.EFragment;
import java.io.File;
import java.util.List;
/**
* @author Andrew Tivodar
* @since 2.3
*/
@EFragment(R.layout.fragment_file_open)
public class ExternalOpenFragment extends FileLoadFragment {
protected Button tryToOpen;
protected TextView messageView;
@Override
public void onViewCreated(View view, final Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
tryToOpen = (Button) view.findViewById(R.id.btnTryToOpen);
messageView = (TextView) view.findViewById(android.R.id.message);
tryToOpen.setOnClickListener(new TryAgainClickListener());
tryToShowFile();
}
@Override
protected void onFileReady(File file) {
openFile(file);
}
@Override
protected void showErrorMessage() {
messageView.setText(R.string.fv_can_not_show_message);
}
private void showFileUnsupportedMessage() {
messageView.setText(getString(R.string.sdr_t_no_app_available, fileType));
}
private void showFileOpeningMessage() {
messageView.setText(R.string.fv_opening_message);
}
private void tryToShowFile() {
showFileOpeningMessage();
tryToOpen.setVisibility(View.GONE);
loadFile();
}
private void openFile(File file) {
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileType.name());
Intent openIntent = new Intent(Intent.ACTION_VIEW);
openIntent.setDataAndType(Uri.fromFile(file), mimeType);
openIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
getActivity().startActivity(openIntent);
getActivity().finish();
} catch (ActivityNotFoundException e) {
showFileUnsupportedMessage();
tryToOpen.setVisibility(View.VISIBLE);
}
}
private class TryAgainClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
tryToShowFile();
}
}
}