- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 ical4j 库解析一个 icalendar 文件 (.ics),它在除 IceCreamSandwich 和 JellyBean 之外的所有 Android 版本上都能正常工作。
有人能告诉我为什么它只在 ICS 和 JB 中抛出 FileNotFound 错误,而在其他版本的 android 中没有吗?
这是我的代码:
public class MainActivity extends Activity {
String foo = null;
TextView TextView = null;
String fileName = "ical.ics";
String URL = "https://www.google.com/calendar/ical/m0es4hhj4g9d69ibak88tvoup0%40group.calendar.google.com/public/basic.ics";
StringBuilder b = new StringBuilder();
@Override
public void onCreate(Bundle savedInstanceState) {
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView = (TextView)findViewById(R.id.Hello_World);
new Download().execute();
}
final class Download extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute(){
TextView.setText("Downloading");
}
@Override
protected Void doInBackground(Void... arg0) {
try {
URL url = new URL(URL);
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
FileOutputStream fos = openFileOutput(fileName, MainActivity.MODE_PRIVATE);
InputStream is = c.getInputStream();
byte[] buffer = new byte[1024];
int length = 0;
while ((length = is.read(buffer)) != -1) {
fos.write(buffer, 0, length);
}
fos.close();
is.close();
} catch (IOException e) {
Log.d("log_tag", "Error: " + e);
}
return null;
}
@Override
protected void onPostExecute(Void Result) {
TextView.setText("Saved...Loading Data");
new Loadicaldata().execute();
}
}
final class Loadicaldata extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
FileInputStream fis = null;
try {
fis = openFileInput(fileName);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_RELAXED_UNFOLDING, true);
CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION, true);
CalendarBuilder builder = new CalendarBuilder();
try {
Calendar calendar = builder.build(fis);
b.append(calendar.getProperty("X-WR-CALNAME").getValue());
for (Object event : calendar.getComponents(Component.VEVENT)) {
if (((VEvent) event).getSummary() != null) {
b.append("\n\n");
b.append(((VEvent) event).getSummary().getValue());
b.append(": ");
b.append(((VEvent) event).getStartDate().getDate());
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void Result) {
TextView.setText(b.toString());
}
}
另外,我注意到如果我使用 Calendar.load(URL url) 它工作正常。所以是文件的保存和加载出了问题。
最佳答案
关于java - 为什么 FileNotFound 仅在 Ice Cream Sandwich 和 JellyBean 中被抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11384908/
我正在开发目标 Sdk 17 的应用程序。我当前的设备是 Nexus 7。 我的应用应该没有操作栏,所以我在 Activity 中使用主题Theme.Holo.NoActionBar。 我想在右下角(
当某些应用程序完成安装或更新时,应用程序的启动器图标与安装通知一起放置,如下所示: 如何让我的应用程序的图标在安装完成时也显示出来? 最佳答案 答案是你不知道。您在此处看到的 Google 日历通知来
我正在为 Jellybean、KitKat 和 Lollipop 以及多种不同的设备开发 Android 应用。 在项目开始时,我使用 Jellybean API 库和目标 API“anroid-18
我有一个带有 RelativeLayout 的应用程序,其中包含一个 ProgressBar 和一个 WebView。没有什么复杂的。但是,我遇到了一个非常奇怪的崩溃,我什至没有看到 ANR 对话框。
所以...我阅读了 jellybean 更新说明并看到“Jelly Bean 为付费应用引入了应用加密。” 据我所知,当有人将其 apk 移动到另一台设备时,此服务应该会使应用程序无法使用。 但是非软
我有一个播放 MP3 文件的应用程序,这些文件可以在公共(public) URL 上找到。不幸的是,服务器不支持流媒体,但 Android 使用户体验相当可以接受。 除 JellyBean 外,它适用
源代码在这里:https://github.com/novemberox/NavigationTest此示例的修改版本:http://developer.android.com/training/im
看起来 Google 已经为第三方应用提供了 Google Now 的离线语音识别功能。 the app named Utter 正在使用它. 有没有人看到过如何使用这个离线语音记录来执行简单的语音命
我刚买了一台新的 lenovo A3500 (A7-50) 平板电脑,带有 4.2.2 jellybean 系统。我的电脑在 widows 8 上运行。当我通过 USB 电缆连接我的平板电脑时,com
我有一个 Android 应用程序,它在引用的库中使用 Gson jar。我目前使用的是 2.2.4 版本,我有 2 部手机来测试它。 在 Samsung Galaxy S Advance 2.3.6
我刚刚将我的 Galaxy Tab2 从 ICS 软件更新到 Jelly Bean。我正在开发一个应用程序,我在其中加载一些带有一些 js 文件的 Html,调用一些用 Javascript 文件编写
我想做的是从我的应用程序调用电话并在此通话中打开扬声器。 在 android 4.0 上一切正常,我只是在开始调用 Intent 之前设置了 audiomanager.setSpeakerphoneO
我发现 2.3.4 和 4.2 之间 onNewIntent 调用的行为有所不同。 我有一个 launchMode=singleTask Activity 。根据我对 singleTask 工作原理的
谁能阐明在 JellyBean [Android] 的服务中引入 Isolatedprocess 标签的真正/主要优势是什么?这在框架级别或内核级别是否有利,正如我们所看到的那样,在服务中将 isol
我制作了一个 XML,其中包含一个 TextView,在以下代码中有一个 textAlignement:center:
我们正在使用 phonegap 3.2.2 开发一个 Android 混合应用程序。 在其中一个 html 页面中,我们正在渲染一个“svg”元素,其中包含 svg 中的“path”元素。每个路径元素
这是我正在使用的代码 Intent i = new Intent( android.provider.MediaStore.ACTION_IMAGE_CAPTU
Jellybean 键盘有一个奇怪的问题。当我的用户升级他们的操作系统时,每当他们尝试使用键盘输入数据时,它就是无法输入。期间。 这很奇怪,因为您确实可以专注于文本区域,但在键盘上打字却没有输出。 有
我正在使用 JQM 开发一个移动网站,但在为 Android 版本 4 及更高版本设置正文时遇到问题。地址和主题工作。 这是代码。 var shareEmail = "mailto:"+thisAdd
当 ICS 出现时,引入了几个新的扩展宽度字节码。其中大部分是用于支持巨型 ID 的说明。以下是其中一些新指令,取 self 的 ics/dalvik/opcode-gen/bytecode.txt:
我是一名优秀的程序员,十分优秀!