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 安卓开发的核心原理和使用方式。


相关知识:
安卓9开发者选项改完又恢复
安卓是一种开放源代码的移动操作系统,其发展已经持续了很多年,而现在的安卓开发者选项已经非常强大和灵活,可以让开发者进行各种高级设置和调试操作,以便更好地开发、测试和调试安卓应用程序。然而,由于安卓开发者选项牵涉到许多高级设置和调试选项,因此,有时候可能会因
2023-05-23
安卓11开发新特性是什么
安卓11是谷歌公司最新发布的操作系统版本,其引入了许多新的特性和改进。今天,我们将对这些新特性进行详细介绍。1. 可用性改进安卓11为用户提供了诸多可用性改进。例如,您现在可以在通知区域内设置静音选项,然后只允许某些紧急通知打断您的静音状态。这种方式允许用
2023-05-23
swift 开发安卓
在介绍 Swift 开发 Android 之前,首先需要了解 Swift 和 Android 的一些基本知识。Swift 是苹果公司于2014年发布的一种编程语言,它是一门面向对象的编程语言,可以在 Apple 平台上进行开发。而 Android 是由 G
2023-05-23
qt5安卓开发
Qt是一个跨平台的框架,可以帮助开发人员创建用于桌面、移动和嵌入式平台的应用程序。Qt提供了一组通用的组件和工具,帮助开发人员在所有支持的平台上构建高效、可移植且易于维护的应用程序。Qt可以支持Windows、MacOS、Linux、Android、iOS
2023-05-23
h5开发中安卓和ios的问题
随着移动设备的普及和移动应用的发展,HTML5技术作为一种轻量级可移植的技术逐渐被广泛使用。然而,由于不同厂商系统之间的差异,HTML5在安卓和iOS两个系统上仍然存在一些问题。下面简要介绍一些关于h5开发中安卓和iOS的问题和原理。一、Font-weig
2023-05-23
2021年安卓开发岗位怎么样
随着移动互联网的高速发展,安卓开发岗位在国内的市场需求也逐渐增长。安卓是一种基于Linux内核,为移动设备开发的操作系统并由Google开发。在这篇文章中,我们将介绍2021年安卓开发岗位的详细情况,包括工作岗位、所需技能、薪资水平和前景展望等。一、安卓开
2023-05-23
开发安卓app连接mysql
在本教程中,我们将探讨如何构建一个简单的安卓应用程序,该程序通过PHP脚本连接到MySQL数据库,从而进行数据的读取和写入。我们将分为以下几个部分进行介绍:1. 创建MySQL数据库和表2. 编写PHP脚本用于与MySQL进行交互3. 安卓应用程序开发以连
2023-04-28
安卓app打包发布流程
安卓应用程序是以APK(Android PacKage)文件格式进行打包发布的,下面是安卓应用程序打包发布的原理或详细介绍流程。1. 准备应用程序准备好安卓应用程序的代码和资源文件,以及应用程序适用的安卓操作系统版本。2. 签名应用程序为了确保应用程序的安
2023-04-28
宁波安卓app开发哪家好
在这篇文章中,我将向大家推荐一家优秀的宁波地区的安卓应用开发公司,并详细说明其中的开发原理以及为什么这家公司值得推荐。**宁波优秀的安卓APP开发公司 - 宁波某科技有限公司**首先,我要推荐的这家安卓应用开发公司是宁波某科技有限公司(注:这里使用了虚拟的
2023-04-28
如何开发安卓app
开发安卓应用的主要步骤包括以下几个方面:1. 熟练掌握Java编程语言及Android开发环境。2. 创建一个新的安卓应用项目:通过Android Studio IDE创建一个新的安卓应用项目,设置应用名称、包名、最小sdk版本和目标sdk版本等信息。3.
2023-04-28
app安卓开发者
标题:Android App 开发入门教程摘要:本教程将为初学者介绍 Android 应用开发的基本概念和实践方法。通过本教程,您将了解 Android 系统的核心原理,掌握编程的基本知识,并能够独立完成一个简单的 Android 应用的开发。目录:1.
2023-04-28
快速开发APP的技巧之一平台化集成SDK,SDK服务是新时代移动互联开发利器
快速开发APP的技巧之一平台化集成SDK,SDK服务是新时代移动互联开发利器   随着中国与世界经济接轨的节奏越来越快,互联网的性质也在悄悄地发生着本质上的变化:垂直、协同、高效,已成为这个行业的真实写照。
2023-02-10
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1