使用Android操作AmazonEC2的困难

使用Android操作AmazonEC2的困难,android,amazon-ec2,amazon-web-services,Android,Amazon Ec2,Amazon Web Services,我是Android的新手,我需要开发一个操作EC2和S3(AmazonWeb服务)的应用程序。我在VirtualBox上的Ubuntu10.04上使用EclipseIndigo。我安装了Android SDK,创建了一个新项目,添加了以下JAR: -aws-android-sdk-1.2.2-ec2.jar -aws-android-sdk-1.2.2-s3.jar -aws-android-sdk-1.2.2-debug.jar 我得到了这个错误: 找不到方法com.amazonaws.ser

我是Android的新手,我需要开发一个操作EC2和S3(AmazonWeb服务)的应用程序。我在VirtualBox上的Ubuntu10.04上使用EclipseIndigo。我安装了Android SDK,创建了一个新项目,添加了以下JAR:

-aws-android-sdk-1.2.2-ec2.jar -aws-android-sdk-1.2.2-s3.jar -aws-android-sdk-1.2.2-debug.jar

我得到了这个错误:

找不到方法com.amazonaws.services.ec2.AmazonEC2Client.DescriberRegions,从方法app.workman.Ec2Activity.onCreate引用

以下是我的活动代码:

public class Ec2Activity extends Activity{
private AmazonClientManager acm;
private AmazonEC2Client ec2;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ec2);

    acm = new AmazonClientManager();

    if (this.acm.hasCredentials()){

    ec2 = acm.ec2();

    System.out.println(ec2.describeRegions());
    }
  }
}
以下是AmazonClientManager.java的代码:

public class AmazonClientManager {
private static final String LOG_TAG = "AmazonClientManager";

private AmazonS3Client s3Client = null;
private AmazonEC2Client ec2Client = null;

public AmazonClientManager() {
}

public AmazonS3Client s3() {
    validateCredentials();
    return s3Client;
}

public AmazonEC2Client ec2() {
    validateCredentials();
    return ec2Client;
}

public boolean hasCredentials() {
    return PropertyLoader.getInstance().hasCredentials();
}

public void validateCredentials() {
    if ( s3Client == null || ec2Client == null) {        
        Log.i( LOG_TAG, "Creating New Clients." );

//            AWSCredentials credentials = new BasicAWSCredentials(PropertyLoader.getInstance().getAccessKey(), PropertyLoader.getInstance().getSecretKey());
        AWSCredentials credentials = new PropertiesCredentials(this.getClass().getResourceAsStream("AwsCredentials.properties"));

        s3Client = new AmazonS3Client(credentials);
        ec2Client = new AmazonEC2Client(credentials);
    }
}

public void clearClients() {
    s3Client = null;
    ec2Client = null;
}
}

谢谢,问候。

这段代码我试过了,它正在工作。我只添加了aws-android-sdk-1.2.1-debug.jar

public class AWSTestActivity extends ListActivity  {
/** Called when the activity is first created. */
AmazonS3Client s3Client;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    AWSCredentials credentials = new BasicAWSCredentials(
            "aKey",
            "sKey");
     s3Client = new AmazonS3Client(credentials);

    List buckets = s3Client.listBuckets();

    List<String> bucketNames = new ArrayList<String>(buckets.size());
    Iterator<Bucket> bIter = buckets.iterator();
    while (bIter.hasNext()) {
        bucketNames.add((bIter.next().getName()));
    }

    List<String> ls=new ArrayList<String>();
    ListObjectsRequest listObjectsRequest = new ListObjectsRequest();

    int keyCount = 1;


        String path="";
             listObjectsRequest.setBucketName(bucketNames.get(0));
  //                 listObjectsRequest.setPrefix(Key);
             ObjectListing listing =  s3Client.listObjects(listObjectsRequest);
             List<S3ObjectSummary> objectSummaries1 = listing
                        .getObjectSummaries();
             ListIterator<S3ObjectSummary> listIterator = objectSummaries1
                        .listIterator();
                while (listIterator.hasNext()) {
                    path = listIterator.next().getKey();
                    keyCount++;
                    ls.add(path);
   //                       if(folder.endsWith("_$folder$")){}
  //                        else{
  //                            
 //                         ls.add(folder.replace(Key+"/", ""));
  //                        }

    }



    setListAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, bucketNames));



}
 protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        Object o = this.getListAdapter().getItem(position);
        String pen = o.toString();
        Toast.makeText(this, "Backet Name " + " " + pen, Toast.LENGTH_LONG).show();
        List<String> ls=new ArrayList<String>();
        ListObjectsRequest listObjectsRequest = new ListObjectsRequest();

        int keyCount = 1;


            String path="";
                 listObjectsRequest.setBucketName(pen);
     //                  listObjectsRequest.setPrefix(Key);
                 ObjectListing listing = s3Client.listObjects(listObjectsRequest);
                 List<S3ObjectSummary> objectSummaries1 = listing
                            .getObjectSummaries();
                 ListIterator<S3ObjectSummary> listIterator = objectSummaries1
                            .listIterator();
                    while (listIterator.hasNext()) {
                        path = listIterator.next().getKey();
                        keyCount++;
  //                            ls.add(path);
                        if(path.endsWith("_$folder$")){
  //                                   ls.add(path.replace("_$folder$", ""));
                        }
                        else{

                            ls.add(path.replace(path+"/", ""));
                        }
                        setListAdapter(new ArrayAdapter<String>(this,
                                android.R.layout.simple_list_item_1, ls));
        }
                    System.out.println("path::::::"+ls.toString());


        }



 }
public类AWSTestActivity扩展了ListActivity{
/**在首次创建活动时调用*/
AmazonS3客户端S3客户端;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AWSCredentials credentials=新的基本WSCredentials(
“阿凯”,
“sKey”);
s3Client=新AmazonS3Client(凭证);
List bucket=s3Client.listbakes();
List bucketNames=newarraylist(buckets.size());
迭代器比特=bucket.Iterator();
while(bIter.hasNext()){
add((bIter.next().getName());
}
List ls=新的ArrayList();
ListObjectsRequest ListObjectsRequest=新建ListObjectsRequest();
int-keyCount=1;
字符串路径=”;
listObjectsRequest.setBucketName(bucketNames.get(0));
//listObjectsRequest.setPrefix(键);
ObjectListing=s3Client.listObjects(listObjectsRequest);
List ObjectSummares1=列表
.getObjectSummaries();
ListIterator ListIterator=objectSummaries1
.listIterator();
while(listIterator.hasNext()){
path=listIterator.next().getKey();
keyCount++;
ls.add(路径);
//如果(folder.endsWith(“$folder$”){}
//否则{
//                            
//ls.add(folder.replace(Key+“/”,“”));
//                        }
}
setListAdapter(新阵列适配器)(此,
android.R.layout.simple_list_item_1,bucketNames));
}
受保护的void onListItemClick(列表视图l、视图v、整数位置、长id){
super.onListItemClick(左、右、位置、id);
对象o=this.getListAdapter().getItem(位置);
String pen=o.toString();
Toast.makeText(这个“Backet Name”+“”+笔,Toast.LENGTH_LONG).show();
List ls=新的ArrayList();
ListObjectsRequest ListObjectsRequest=新建ListObjectsRequest();
int-keyCount=1;
字符串路径=”;
listObjectsRequest.setBucketName(笔);
//listObjectsRequest.setPrefix(键);
ObjectListing=s3Client.listObjects(listObjectsRequest);
List ObjectSummares1=列表
.getObjectSummaries();
ListIterator ListIterator=objectSummaries1
.listIterator();
while(listIterator.hasNext()){
path=listIterator.next().getKey();
keyCount++;
//ls.add(路径);
if(path.endsWith(“$folder$”){
//ls.add(path.replace(“\u$folder$”,”);
}
否则{
ls.add(path.replace(path+“/”,“”));
}
setListAdapter(新阵列适配器)(此,
android.R.layout.simple_list_item_1,ls));
}
System.out.println(“路径::”+ls.toString());
}
}

谢谢你的回答,但不起作用。。。我得到了这个错误:“05-08 11:22:56.914:E/AndroidRuntime(2463):java.lang.NoClassDefFoundError:com.amazonaws.auth.PropertiesCredentials”。我现在只使用“aws-android-sdk-1.2.2-debug.jar”。感谢.Idem提供的BasicAWSCredentials:“05-08 11:36:14.528:E/AndroidRuntime(2520):java.lang.NoClassDefFoundError:com.amazonaws.auth.BasicAWSCredentials”。我无法理解。。。jar位于构建路径中,但上面描述的类无法识别!我需要更多帮助…导入以下3类com.amazonaws.auth.AWSCredentials;com.amazonaws.auth.BasicAWSCredentials;com.amazonaws.services.s3.amazons3客户端;我想你可以从amazon演示项目中得到这个例子,amazons3client()函数是预定义的函数,你可以使用BasicAWSCredentials类来实现它