Sony Small App SDK



因此,我刚刚开始使用新的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>

似乎您的代码没有错。因此,我认为问题在于您如何构建项目。更确切地说,如何包括小型应用程序框架:不应该是!

如果您只需通过" Java build Path"添加JAR(从Sony SDK) ->"添加外部JAR",则应用程序将包含API JAR的类。问题是这些只是存根类,因此您可以获得两个可能的例外之一。

一种简单快捷的方法来解决此问题(并且仍使用标准的Android SDK,而不是切换到Sony SDK)是:

  • 创建一个Java项目,并将其称为" Smallappapi",例如
  • 在Java项目中,通过"添加外部罐子"添加小应用程序jar
  • 在" Java Build Path"屏幕的最后一个选项卡中,称为"顺序和导出",请确保导出小应用程序。
  • 在Android项目中,在" Java Build Path"屏幕中,在" Projects"选项卡中,只需添加Java Project Smallemappapi(并删除小应用程序JAR)。

使用此设置,仅在构建时才会使用小型应用程序罐。这对我来说很好。

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

感谢您的回复,所有这些都在将服务标签置于MainApplication后立即工作。

相关内容

最新更新