3

所以我刚刚开始使用新的 Sony Xperia Tablet S Small App SDK。我不是真正的菜鸟,以前开发过许多个人应用程序,但这让我很困惑。

我已经在 Eclipse 中加载了示例项目(全部正确配置),整理了一些错误,编译到我的设备上,当我从设备底部的启动器启动小应用程序时,它强制关闭 - 它是与我尝试使用 SDK 制作的每个示例/应用程序相同。

我附在我的 MainApplication.java 和 AndroidManifest.xml 下面,希望有人能够看到问题所在。不明白,因为它是按照书中的内容创建的。任何帮助真的很感激。

MainApplication.java:

package com.sony.thirdtest;

import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.view.View;
import android.widget.Toast;
import com.small.sonyapptest.R;
import com.sony.smallapp.SmallAppWindow;
import com.sony.smallapp.SmallApplication;

public class MainApplication extends SmallApplication {
    private Configuration mConfig;

    @Override
    public void onCreate() {
        super.onCreate();
        mConfig = new Configuration(getResources().getConfiguration());

        setContentView(R.layout.activity_main);
        setTitle(R.string.app_name);

        SmallAppWindow.Attributes attr = getWindow().getAttributes();
        attr.minWidth = 200;
        attr.minHeight = 200;
        attr.width = 400;
        attr.height = 300;
        attr.flags |= SmallAppWindow.Attributes.FLAG_RESIZABLE;
        getWindow().setAttributes(attr);

        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainApplication.this, R.string.hello, Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    @Override
    public void onStart() {
        super.onStart();
    }

    @Override
    public void onStop() {
        super.onStop();
    }

    @Override
    protected boolean onSmallAppConfigurationChanged(Configuration newConfig) {
        int diff = newConfig.diff(mConfig);
        mConfig = new Configuration(getResources().getConfiguration());
        // Avoid application from restarting when orientation changed
        if ((diff & ActivityInfo.CONFIG_ORIENTATION) != 0) {
            return true;
        }
        return super.onSmallAppConfigurationChanged(newConfig);
    }
}

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.small.sonyapptest" 
    android:versionCode="1" 
    android:versionName="1.0">
  <uses-sdk android:minSdkVersion="15" /> 


    <uses-permission android:name="com.sony.smallapp.permission.SMALLAPP" />

    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name">


        <uses-library android:name="com.sony.smallapp.framework" />

            <service 
                android:name="com.small.sonyapptest.MainApplication" 
                android:exported="true" >

            <intent-filter>

                <action android:name="com.sony.smallapp.intent.action.MAIN" />

                <category

                android:name="com.sony.smallapp.intent.category.LAUNCHER" />

                </intent-filter>

            </service>

    </application>
</manifest>
4

3 回答 3

1

您的代码似乎没有任何问题。所以我认为问题在于你如何构建项目。更确切地说,小应用程序框架是如何包含在内的:它不应该包含!

如果您只是通过“Java 构建路径”->“添加外部 Jar”添加 jar(来自 Sony SDK),那么 api jar 的类将包含在应用程序中。问题是那些只是存根类,所以你可以得到两个可能的例外之一。

解决此问题的一种简单快捷的方法(仍然使用标准的 android sdk,而不是切换到 Sony SDK)如下:

  • 创建一个 java 项目,并将其命名为“SmallAppApi”,例如
  • 在 java 项目中通过“添加外部 jar”添加小应用程序 jar
  • 在“Java 构建路径”屏幕的最后一个选项卡中,名为“订购和导出”,确保已导出小应用程序 jar。
  • 在 android 项目中,在“Java 构建路径”屏幕中,在“项目”选项卡中只需添加 java 项目 SmallAppApi(并删除小应用程序 jar)。

通过此设置,小应用程序 jar 将仅在构建时使用。这对我来说很好。

于 2012-10-25T05:57:44.447 回答
1

在服务标签中更改android:name="com.small.sonyapptest.MainApplication"android:name="MainApplication"

于 2012-10-25T13:13:22.650 回答
0

感谢您的回复,在将服务标签更改为 MainApplication 后,现在一切正常。

于 2012-10-25T14:39:56.203 回答