oss安卓开发

阿里云对象存储(OSS)是一种云存储解决方案,提供安全、高可用、高扩展、低成本的数据存储服务。它可用于存储图片、音视频、文档等各种多媒体文件,也可用于搭建各种类型的网站文件系统、移动APP数据存储等。 OSS 还提供 Restful API 接口、SDK 工具和丰富的管理控制台,使开发人员和管理员能够更轻松地管理和访问存储的文件。

本文将主要介绍 OSS 在安卓开发中的原理和使用方式。

## OSS 安卓 SDK

OSS 安卓 SDK 通常是以 jar 包的形式提供给开发者使用。在安卓开发中,我们可以将其下载到本地文件,然后在工程中导入,就可以使用 OSS 提供的 API 接口进行开发。

目前 OSS 提供在安卓端的 SDK 可以在官网上进行下载,其链接如下:

```

https://help.aliyun.com/document_detail/32013.html

```

## SDK 使用流程

下面我们就以安卓 APP 开发为例,介绍 OSS SDK 的使用流程。

### 1.导入 SDK

下载 OSS SDK 并在项目中导入oss-android-sdk-x.x.x.jar 包。

### 2.配置权限

在安卓Manifest.xml 文件中配置以下权限:

```

```

### 3.初始化 SDK

在 Application 中初始化 OSSClient:

```java

public class MyApplication extends Application{

private OSS oss;

@Override

public void onCreate() {

super.onCreate();

OSSLog.enableLog();

OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider("YourAccessKeyId", "YourAccessKeySecret");

OSS oss = new OSSClient(getApplicationContext(), "YourEndpoint", credentialProvider);

}

public OSS getOss() {

return oss;

}

}

```

其中,`YourAccessKeyId` 和 `YourAccessKeySecret` 是你在阿里云账号中申请的 Access Key,`YourEndpoint` 是给 OSS 分配的域名。

### 4.简单上传

使用 OSSClient 的 `putObject`接口进行简单上传。

```java

public class OssService {

private static final String endpoint = "**YourEndpoint**";

private static final String callbackAddress = "**YourCallbackAddress**";

private static final String accessKeyId = "**YourAccessKeyId**";

private static final String accessKeySecret = "**YourAccessKeySecret**";

private static final String testBucket = "**YourBucketName**";

private static final String testObject = "**YourObjectName**";

private static final String uploadFilePath = "**YourUploadFilePath**";

public OSS getOss(Context context) {

OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(accessKeyId, accessKeySecret);

OSS oss = new OSSClient(context, endpoint, credentialProvider);

return oss;

}

public void asyncPutObjectFromLocalFile() {

// 构造上传请求

PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath);

OSSAsyncTask task = getOss(context).asyncPutObject(put, new OSSCompletedCallback() {

@Override

public void onSuccess(PutObjectRequest request, PutObjectResult result) {

Log.d("PutObject", "UploadSuccess");

Log.d("ETag", result.getETag());

Log.d("RequestId", result.getRequestId());

}

@Override

public void onFailure(PutObjectRequest request, ClientException clientException, ServiceException serviceException) {

// 请求异常

if (clientException != null) {

// 本地异常如网络异常等

clientException.printStackTrace();

}

if (serviceException != null) {

// 服务异常

Log.e("ErrorCode", serviceException.getErrorCode());

Log.e("RequestId", serviceException.getRequestId());

Log.e("HostId", serviceException.getHostId());

Log.e("RawMessage", serviceException.getRawMessage());

}

}

});

}

}

```

其中,`PutObjectRequest` 中设置待上传文件的 Bucket 名称、上传路径和本地文件的绝对路径;OSSAsyncTask 控制上传任务的异步执行结果。

### 5. 简单下载

使用 OSSClient 的 `getObject` 接口进行简单下载。

```java

public class OssService {

// 上文代码省略...

public void asyncGetObject() {

// 构造下载文件请求

GetObjectRequest get = new GetObjectRequest(testBucket, testObject);

OSSAsyncTask task = getOss(context).asyncGetObject(get, new OSSCompletedCallback() {

@Override

public void onSuccess(GetObjectRequest request, GetObjectResult result) {

InputStream inputStream = result.getObjectContent();

try {

FileOutputStream outputStream = new FileOutputStream(Environment.getExternalStorageDirectory() + "/oss/" + testObject);

byte[] buffer = new byte[2048];

int len;

while ((len = inputStream.read(buffer)) != -1) {

outputStream.write(buffer, 0, len);

}

outputStream.close();

inputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

@Override

public void onFailure(GetObjectRequest request, ClientException clientException, ServiceException serviceException) {

// 请求异常

if (clientException != null) {

// 本地异常如网络异常等

clientException.printStackTrace();

}

if (serviceException != null) {

// 服务异常

Log.e("ErrorCode", serviceException.getErrorCode());

Log.e("RequestId", serviceException.getRequestId());

Log.e("HostId", serviceException.getHostId());

Log.e("RawMessage", serviceException.getRawMessage());

}

}

});

}

}

```

其中,`GetObjectRequest` 中设置下载文件的 Bucket 名称和下载路径;OSSAsyncTask 控制下载任务的异步执行结果。

## 结语

OSS 提供安卓 SDK,方便开发者在安卓 APP 中使用它的服务,通过本文,希望可以帮助读者掌握 OSS 安卓开发的核心原理和使用方式。


相关知识:
安卓3d开发项目
安卓3D开发项目主要是基于OpenGL ES技术开发的。OpenGL ES(OpenGL for Embedded Systems)是一种在嵌入式系统中使用的OpenGL API,主要用于移动设备(如安卓手机、平板电脑等)和类似的嵌入式系统中。开发安卓3D
2023-05-23
安卓 推送开发
安卓推送是指在安卓平台上实现消息推送功能,让应用程序可以向手机用户推送消息。推送功能是一种基于云服务的技术,可以让开发者把消息发送到云端,然后再推送到手机用户的设备上。本文将详细介绍安卓推送的原理以及如何实现。一、安卓推送的原理在安卓推送的过程中,主要涉及
2023-05-23
ubuntu开发安卓
Ubuntu作为一种流行的桌面操作系统,同样可以用于安卓开发环境的搭建。但要注意的是,安卓开发相对而言比较复杂,需要在安装和配置上多花一些心思。1. 安装Java安卓开发的基础语言是Java,因此安装Java是必要的,可以使用以下命令进行安装:```sud
2023-05-23
qt开发安卓中文
Qt是一款跨平台的C++应用程序开发框架,可以开发桌面应用程序、嵌入式系统等,同时也支持开发移动平台上的应用程序。在移动平台上,Qt可以用于开发Android应用程序,并且支持中文开发。本文将介绍Qt在Android平台上开发中文应用程序的原理和详细步骤。
2023-05-23
groovy开发安卓
Groovy是一种基于JVM的编程语言,它的语法和Java非常类似,但是它拥有比Java更加简洁的语法和更为方便的动态特性。相比于Java,Groovy更为适合面向对象编程和脚本编写。由于它有着在Java基础上进行扩展的能力,因此也有很多Groovy编写的
2023-05-23
最新开发棋牌app安卓版下载
开发棋牌游戏的app需要一定的技术基础,主要需要掌握以下几个方面:1. 语言编程基础:需要了解Java或Kotlin等安卓编程语言,并掌握基本的语法和语言特性,能够使用Android Studio等开发工具进行开发。2. 安卓框架:需要了解安卓常用的框架,
2023-04-28
安卓开发的app提示一直有风险
在许多情况下,Android 应用在开发时可能会遇到一些风险。下面我们将深入了解一些常见的安卓开发风险,以及为什么这些问题可能发生。1. 数据安全风险:安卓应用的数据安全非常重要,开发者需要确保用户信息和数据的安全性。常见的数据风险包括:使用不安全的网络连
2023-04-28
安卓开发app用什么数据库
安卓App数据库选择及其原理详细介绍在安卓开发中,我们经常需要在本地存储和管理数据。幸运的是,安卓平台提供了多种数据库选项供开发者选择。本篇文章将详细介绍常用的安卓App数据库,并解释其原理和用法。1. SQLiteSQLite是Android系统默认提供
2023-04-28
安卓app的开发流程
安卓应用开发是一个涉及到多个步骤的复杂过程。作为一个网站博主,我将尽可能详细地介绍整个安卓应用开发的原理和基础流程,以帮助初学者入门。1. 学习和了解安卓系统:首先,你需要熟悉安卓操作系统的基本概念,了解其特性、架构以及如何运行应用。也建议学习Java或K
2023-04-28
哈尔滨安卓开发app口碑产品
哈尔滨是一个拥有庞大移动用户群体的城市,而移动APP已经成为人们日常生活不可或缺的一部分,因此APP开发成为了一个高度竞争的市场。在这个市场上,有些APP能够迅速火爆,成为口碑产品,而有些则默默无闻,黯然退出舞台。那么,作为一位哈尔滨的安卓开发者,想要开发
2023-04-28
东营安卓app开发系统
东营安卓app开发系统是一款基于Android平台的应用程序开发系统,它为开发者提供了一系列的开发工具和框架,帮助开发者快速创建优秀的Android应用程序。东营安卓app开发系统包含以下组件:1. Android Studio:是一款官方的集成开发环境(
2023-04-28
html5安卓app开发
HTML5 安卓APP开发详细介绍随着互联网技术不断发展,移动设备使用用户的快速增长,使得移动应用越来越备受关注。为了满足不同平台(如Android、iOS等)用户的需求,开发者需要面对多种编程语言和工具。HTML5作为跨平台的技术解决方案,可以在多个平台
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1