2016-04-29 108 views
0

我需要將亞馬遜應用內購買v2.0(購買類型授權)與Android整合。我下載並從亞馬遜sdk獲得示例項目,工作正常。當我在亞馬遜商店創建一款產品的新應用程序時。下載json文件並放在mnt/sdcard /(設備存儲)路徑並運行項目,我收到「檢測到的執行問題」的通知,但是當我在「成功」消息中點擊「購買」按鈕顯示對話框時。我如何相信?我提到了亞馬遜的鏈接,但我無法理解。任何人都可以引導我,如何實現這一個或給一些教程鏈接。Android - 亞馬遜應用內購買V2.0

回答

-1

我送你的代碼對於這一點,希望如此樂於助人, MainActivity.java:

package com.example.imagecamera; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.OutputStreamWriter; 
import java.net.URL; 
import java.util.Date; 
import java.util.List; 
import com.amazonaws.auth.BasicAWSCredentials; 
import com.amazonaws.services.s3.AmazonS3Client; 
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest; 
import com.amazonaws.services.s3.model.ListObjectsRequest; 
import com.amazonaws.services.s3.model.ObjectListing; 
import com.amazonaws.services.s3.model.PutObjectRequest; 
import com.amazonaws.services.s3.model.ResponseHeaderOverrides; 
import com.amazonaws.services.s3.model.S3ObjectSummary; 
import android.app.Activity; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.os.StrictMode; 
import android.provider.MediaStore; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.Toast; 

public class MainActivity extends Activity implements OnClickListener { 
private final int CAMERA_RESULT = 1; 

AmazonS3Client s3Client; 
private final String Tag = getClass().getName(); 

Button button1, button2; 

ImageView imageView1; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 

    button1 = (Button) findViewById(R.id.button1); 
    button2 = (Button) findViewById(R.id.button2); 

    imageView1 = (ImageView) findViewById(R.id.imageView1); 

    button1.setOnClickListener(this); 
    button2.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      s3Client = new AmazonS3Client(new BasicAWSCredentials(
        "AKIAJIJQGCIZE26IG4SQ", 
        "TiZiqjWRSBMZXDqA7Tnue2IPmI1qUDHQkVldABJR")); 
      ListObjectsRequest listObjectsRequest = new ListObjectsRequest() 
        .withBucketName(Constants.BUCKET_NAME).withPrefix(
          "processedfiles/pixel"); 
      ObjectListing objectListing; 

      do { 
       objectListing = s3Client.listObjects(listObjectsRequest); 
       for (S3ObjectSummary objectSummary : objectListing 
         .getObjectSummaries()) { 
        System.out.println(" - " + objectSummary.getKey() 
          + " " + "(size = " + objectSummary.getSize() 
          + ")"); 
        Log.e("objects", objectSummary.getKey()); 
       } 
       listObjectsRequest.setMarker(objectListing.getNextMarker()); 
      } while (objectListing.isTruncated()); 
     } 
    }); 

} 

public void onClick(View v) { 

    PackageManager pm = getPackageManager(); 

    if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) { 

     Intent i = new Intent(
       android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

     i.putExtra(MediaStore.EXTRA_OUTPUT, 
       MyFileContentProvider.CONTENT_URI); 

     startActivityForResult(i, CAMERA_RESULT); 

    } else { 

     Toast.makeText(getBaseContext(), "Camera is not available", 
       Toast.LENGTH_LONG).show(); 

    } 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    super.onActivityResult(requestCode, resultCode, data); 

    Log.i(Tag, "Receive the camera result"); 

    if (resultCode == RESULT_OK && requestCode == CAMERA_RESULT) { 

     File out = new File(getFilesDir(), "newImage.jpg"); 

     if (out.exists()) { 

      try { 
       if (android.os.Build.VERSION.SDK_INT > 9) { 
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
          .permitAll().build(); 
        StrictMode.setThreadPolicy(policy); 

        s3Client = new AmazonS3Client(new BasicAWSCredentials(
          "AKIAJIJQGCIZE26IG4SQ", 
          "TiZiqjWRSBMZXDqA7Tnue2IPmI1qUDHQkVldABJR")); 
        PutObjectRequest por = new PutObjectRequest(
          Constants.BUCKET_NAME, "processedfiles/pixel/" 
            + "010test1" + ".jpg", out); 
        s3Client.putObject(por); 

        Log.e("out", "exist"); 
       } 
      } catch (Exception e) { 
       Log.e("out", e.toString()); 
       Toast.makeText(getApplicationContext(), e.toString(), 5000) 
         .show(); 
      } 
     } 

     if (!out.exists()) { 

      Toast.makeText(getBaseContext(), 

      "Error while capturing image", Toast.LENGTH_LONG) 

      .show(); 

      return; 

     } 

     Bitmap mBitmap = BitmapFactory.decodeFile(out.getAbsolutePath()); 

     imageView1.setImageBitmap(mBitmap); 

    } 

} 

@Override 
protected void onDestroy() { 

    super.onDestroy(); 

    imageView1 = null; 

} 

} 

另一個類Constants.java:

public class Constants { 
public static final String AWS_ACCOUNT_ID = "361005331374"; 
public static final String COGNITO_POOL_ID = "us-east-1:9ccba6ed-7c1c-4c9b"  

// Note, the bucket will be created in all lower case letters 
// If you don't enter an all lower case title, any references you add 
// will need to be sanitized 
public static final String BUCKET_NAME = "kiawebsite"; 
} 

aother類圖像從相機中取出 MyFileContentProvider.java:

package com.example.imagecamera; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.HashMap; 
import android.content.ContentProvider; 
import android.content.ContentValues; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.ParcelFileDescriptor; 

public class MyFileContentProvider extends ContentProvider { 

public static final Uri CONTENT_URI = Uri 
     .parse("content://com.example.imagecamera/"); 

private static final HashMap<String, String> MIME_TYPES = new  

static { 

    MIME_TYPES.put(".jpg", "image/jpeg"); 

    MIME_TYPES.put(".jpeg", "image/jpeg"); 

} 

@Override 
public boolean onCreate() { 

    try { 

     File mFile = new File(getContext().getFilesDir(), "newImage.jpg"); 

     if (!mFile.exists()) { 

      mFile.createNewFile(); 

     } 

     getContext().getContentResolver().notifyChange(CONTENT_URI, null); 

     return (true); 

    } catch (Exception e) { 

     e.printStackTrace(); 

     return false; 

    } 

} 

@Override 
public String getType(Uri uri) { 

    String path = uri.toString(); 

    for (String extension : MIME_TYPES.keySet()) { 

     if (path.endsWith(extension)) { 

      return (MIME_TYPES.get(extension)); 

     } 

    } 

    return (null); 

} 

@Override 
public ParcelFileDescriptor openFile(Uri uri, String mode) 

throws FileNotFoundException { 

    File f = new File(getContext().getFilesDir(), "newImage.jpg"); 

    if (f.exists()) { 

     return (ParcelFileDescriptor.open(f, 

     ParcelFileDescriptor.MODE_READ_WRITE)); 

    } 

    throw new FileNotFoundException(uri.getPath()); 

} 

@Override 
public Cursor query(Uri url, String[] projection, String selection, 

String[] selectionArgs, String sort) { 

    throw new RuntimeException("Operation not supported"); 

} 

@Override 
public Uri insert(Uri uri, ContentValues initialValues) { 

    throw new RuntimeException("Operation not supported"); 

} 

@Override 
public int update(Uri uri, ContentValues values, String where, 

String[] whereArgs) { 

    throw new RuntimeException("Operation not supported"); 

} 

@Override 
public int delete(Uri uri, String where, String[] whereArgs) { 

    throw new RuntimeException("Operation not supported"); 

} 

} 
+0

謝謝,不是那樣的。你閱讀這個問題,並詢問是否有人錯過理解的句子。 – Sakthi