如何将值从主机应用程序发送到smartextension?

时间:2013-09-10 07:25:09

标签: android android-intent sony sony-smartwatch

我对使用主机应用程序的意图到智能扩展程序有疑问。我在hostapp中有Class ActivityReceiver

    package com.PrinterStatus.AppLab;

    import java.util.ArrayList;

    import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import com.sonyericsson.extras.liveware.extension.controlsample.*;

    public class ActivityToSmartWatch extends Activity {

    private Activity activity;
    private ArrayList<String[]> data;
    private static LayoutInflater inflater = null;
    public String[] inkLevels = new String[5];
    public final String EXTRA_MESSAGE = "com.PrinterStatus.AppLab.MESSAGE";
    View message;
    String [][] storePrintIMC= new String [4][4];
    public static final String ARRAYS_COUNT = "com.PrinterStatus.AppLab.ARRAYS_COUNT";
    public static final String ARRAY_INDEX = "com.PrinterStatus.AppLab.ARRAY_INDEX"; 



    public ActivityToSmartWatch(Activity a, ArrayList<String[]> inkLevels) {
        activity = a;
        data = inkLevels;
        inflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public void sendMessage(View view) 
    {
        Bundle bundle = new Bundle();
        final String data[][] = storePrintIMC; 
        int count = data.length; 
        bundle.putInt(ARRAYS_COUNT, count); 
        for (int i = 0; i < count; i++)
        { 
            bundle.putStringArray(ARRAY_INDEX + i, data[i]); 
        } 
         Intent intent = new Intent(this, ActivityReceiver.class); 
         intent.putExtras(bundle);
         startActivity(intent);
    }

    public int getCount() {
        return data.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }


    public String[] getPrintIMC (int position)
    {

        System.arraycopy(data.get(position), 0, inkLevels, 0, data.get(position).length);


        data.get(position);
        //sendMessage(message);
        if (position == 0 )
        {

            storePrintIMC[0][0]=inkLevels[0];
            storePrintIMC[0][1]=inkLevels[1];
            storePrintIMC[0][2]=inkLevels[2];
            storePrintIMC[0][3]=inkLevels[3];
        }
        if (position == 1 )
        {
            storePrintIMC[1][0]=inkLevels[0];
            storePrintIMC[1][1]=inkLevels[1];
            storePrintIMC[1][2]=inkLevels[2]; 
            storePrintIMC[1][3]=inkLevels[3];
        }
        if (position == 2 )
        {
            storePrintIMC[2][0]=inkLevels[0];
            storePrintIMC[2][1]=inkLevels[1];
            storePrintIMC[2][2]=inkLevels[2]; 
            storePrintIMC[2][3]=inkLevels[3];
        }
        if (position == 3 )
        {   
            storePrintIMC[3][0]=inkLevels[0];
            storePrintIMC[3][1]=inkLevels[1];
            storePrintIMC[3][2]=inkLevels[2]; 
            storePrintIMC[3][3]=inkLevels[3];
            //sendMessage(message);
        }

        return inkLevels;       
    }

    }

I want to send inkLevels to my smartextension(different package) so I using intent inside sendMessage method. And inside the smartextension, I have class activity receiver.

    package com.sonyericsson.extras.liveware.extension.controlsample;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;


 public class ActivityReceiver extends Activity {

   public ArrayList<String[]> arrays ;
   public String[]color = new String [4];
   public  String[][] inkLev ;

    protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     Bundle bundle = getIntent().getExtras();

      if (bundle != null) 
      {

          int count = bundle.getInt("com.PrinterStatus.AppLab.ARRAYS_COUNT", 0);
          ArrayList<String[]> arrays = new ArrayList<String[]>(count);
          for (int i = 0; i < count; i++)
          {

              arrays.add(bundle.getStringArray("com.PrinterStatus.AppLab.ARRAY_INDEX" + i));
              String[][] inkLev = arrays.toArray(new String[][]{});
          }
      }

      }
    public String[] getInkLevel()
    {
        color[0]= inkLev[0][2];
        color[1]= inkLev[1][2];
        color[2]= inkLev[2][2];
        color[3]= inkLev[3][2];

        return color;

    }

  } 

我想使用变量颜色来显示我将放在另一个类中的接口中的值。 但是我的编码方式仍然存在问题。为什么它仍然找不到课程?我忘记了什么吗?

09-10 09:12:08.750: E/dalvikvm(10340): Could not find class 'com.sonyericsson.extras.liveware.extension.controlsample.ActivityReceiver', referenced from method com.PrinterStatus.AppLab.ActivityToSmartWatch.sendMessage
09-10 09:12:08.750: W/dalvikvm(10340): VFY: unable to resolve const-class 670 (Lcom/sonyericsson/extras/liveware/extension/controlsample/ActivityReceiver;) in Lcom/PrinterStatus/AppLab/ActivityToSmartWatch;

3 个答案:

答案 0 :(得分:0)

确保您已在AndroidManifest.xml中添加了ActivityReceiver

答案 1 :(得分:0)

当外部库未正确连接时会发生这种情况

VFY:无法解析const-class 670(Lcom / sonyericsson

检查一件事是否在“订单和导出”

中检查了所有依赖项

enter image description here

答案 2 :(得分:0)

您是否添加了正确的库:

将SmartExtensionAPI和SmartExtension Utils作为库添加到项目中

检查此答案:Smartwatch Application Deployment