【问题标题】:Trying to create simple android app to launch a website尝试创建简单的 android 应用程序来启动网站
【发布时间】:2014-03-14 15:39:34
【问题描述】:

为了帮助爱达荷州立大学的新生找到建筑物、教室等,我们创建了一个在 Android 或 iOS 上运行良好的网络地图。

网络地图的 URL 非常长,因此我们制作了一个指向它的 bit.ly 链接以及 QR 码。 网络地图可在http://bit.ly/isumap查看

我现在收到一些请求,希望创建一个可供学生(以及教职员工和访客)下载和安装的应用(从 Android 开始)。该应用程序只会在他们的移动设备上为他们启动 web 地图。因此,他们不需要记住 URL 或进行任何输入。

我已经安装了 Android SDK(带有 Eclipse)并且我确信它工作得很好。到目前为止,我已经使用 stackOverflow 来帮助我,但现在卡住了。当应用程序运行时,我收到此错误“不幸的是,gISU 已停止”。但它确实没有停止... URL 已正确启动。如何解决此问题,以免出现此错误?换句话说,我如何让 Android 成功处理此事件。

代码很简单: MainActivity.Java 包 com.example.gisumap;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
//import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    String url = "http://isu.maps.arcgis.com/apps/Solutions/s2.html?   appid=8f29d302702249069af69eb5da6f1299&ex=-12517238,5290414,-12514181,5292459,102100";
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(url));
    startActivity(i);
    finish();
    moveTaskToBack(true);
}

}

这是清单

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.gisumap.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

我已编辑清单以包含一个用于 INTERNET。

这也是 LogCat 03-14 13:56:14.470: D/AndroidRuntime(986): 关闭虚拟机 03-14 13:56:14.470: W/dalvikvm(986): threadid=1: 线程以未捕获的异常退出 (group=0xb3ac3b90) 03-14 13:56:14.480:E/AndroidRuntime(986):致命异常:主要 03-14 13:56:14.480:E/AndroidRuntime(986):进程:com.example.gisumap,PID:986 03-14 13:56:14.480: E/AndroidRuntime(986): android.util.SuperNotCalledException: Activity {com.example.gisumap/com.example.gisumap.MainActivity} 没有调用到 super.onCreate() 03-14 13:56:14.480: E/AndroidRuntime(986): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2142) 03-14 13:56:14.480: E/AndroidRuntime(986): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226) 03-14 13:56:14.480: E/AndroidRuntime(986): 在 android.app.ActivityThread.access$700(ActivityThread.java:135) 03-14 13:56:14.480: E/AndroidRuntime(986): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397) 03-14 13:56:14.480: E/AndroidRuntime(986): 在 android.os.Handler.dispatchMessage(Handler.java:102) 03-14 13:56:14.480: E/AndroidRuntime(986): 在 android.os.Looper.loop(Looper.java:137) 03-14 13:56:14.480: E/AndroidRuntime(986): 在 android.app.ActivityThread.main(ActivityThread.java:4998) 03-14 13:56:14.480: E/AndroidRuntime(986): 在 java.lang.reflect.Method.invokeNative(Native Method) 03-14 13:56:14.480: E/AndroidRuntime(986): 在 java.lang.reflect.Method.invoke(Method.java:515) 03-14 13:56:14.480: E/AndroidRuntime(986): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 03-14 13:56:14.480: E/AndroidRuntime(986): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 03-14 13:56:14.480: E/AndroidRuntime(986): at dalvik.system.NativeStart.main(Native Method) 03-14 13:56:45.087: I/Process(986): 发送信号。 PID:986 SIG:9

谢谢大家。

哇!很棒的工作和很棒的团队。对于以后阅读本文的其他人,为了完成这项工作,我遵循了知识渊博的海报的建议。

使用我第一次发布的代码:

删除了“moveTaskToBack(true);”行来自 MainActivity 在清单中添加了一行: 最后,(关键) 在 MainActivity 中为超级添加了一行:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

现在可以了!谢谢一百万。

【问题讨论】:

  • 检查您的 logcat 并发布您发现的任何异常(如果您不知道 logcat 在哪里,请参阅stackoverflow.com/a/3280126/1253844
  • moveTaskToBack(true); 我不认为这是必要的,我不确定你是否可以在finish之后调用它
  • 不过,您可能希望在清单中使用 noHistory,以避免从浏览器按回时出现问题。
  • 我同意。我将删除该行代码,因为它试图修复错误(无论如何它都没有帮助)
  • 我相信你的问题已经解决了,但是你可以很容易地实现一个 webview,这样你就可以真正在你的应用程序中,而不仅仅是一个链接

标签: android


【解决方案1】:

你忘了调用 super.onCreate!添加这个:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); //add this line

documentation

派生类必须调用该方法的超类实现。否则,将引发异常。

==> 这就是你的 logcat 在这里抱怨的:

android.util.SuperNotCalledException: Activity {com.example.gisumap/com.example.gisumap.MainActivity} 
did not call through to super.onCreate() 

【讨论】:

    【解决方案2】:

    您需要在 AndroidManifest 文件中添加 Internet 权限才能使其正常工作,我还建议您在某个时候使用 webview 加载 URL!

    【讨论】:

    • 我不明白为什么。这只是使用特定参数启动另一个应用程序。 webview 会大大增加复杂性。
    • 也许没必要;但是您是否看到缺少 Internet 权限?
    • 没有。因为应用程序实际上并没有尝试连接到任何东西。
    • 如何将互联网权限添加到清单中。我也会搜索它。谢谢..这可能有效
    • 如果您开始在 android sdkVersion 行下方输入此内容,IDE 应该会显示选项供您自动选择
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 2014-11-18
    • 2019-01-18
    • 1970-01-01
    • 2013-01-10
    相关资源
    最近更新 更多