Skip to content

Commit d4ebefc

Browse files
committed
Merge pull request #3 from studyplus/check-for-exception
Add exception handling on sample application
2 parents f230b26 + 5e0c499 commit d4ebefc

File tree

6 files changed

+60
-13
lines changed

6 files changed

+60
-13
lines changed

README.md

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,15 @@ dependencies {
2828
Open an Activity to connect with Studyplus.
2929

3030
```java
31-
AuthTransit.from(activity).startActivity(
32-
context.getString("app_consumer_key"),
33-
context.getString("app_consumer_key_secret")
34-
);
31+
try {
32+
AuthTransit.from(activity).startActivity(
33+
context.getString("app_consumer_key"),
34+
context.getString("app_consumer_key_secret")
35+
);
36+
} catch (ActivityNotFoundException e) {
37+
e.printStackTrace();
38+
Toast.makeText(context, "Need for Studyplus 2.14.0+", Toast.LENGTH_SHORT).show();
39+
}
3540
```
3641

3742
Then save its result.
@@ -55,7 +60,13 @@ ApiRequest request = StudyRecordPostRequest.of(
5560
.setDurationSeconds(2 * 60)
5661
.build()
5762
);
58-
StudyplusApi.getClient(context).send(request);
63+
64+
try {
65+
StudyplusApi.getClient(context).send(request);
66+
} catch (AccessTokenNotFound e) {
67+
e.printStackTrace();
68+
Toast.makeText(context, "Access token not exists", Toast.LENGTH_SHORT).show();
69+
}
5970
```
6071

6172
### More

SDKExample/src/main/java/jp/studyplus/android/sdk/example/ExampleActivity.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package jp.studyplus.android.sdk.example;
22

33
import android.app.Activity;
4+
import android.content.ActivityNotFoundException;
45
import android.content.Context;
56
import android.content.Intent;
67
import android.os.Bundle;
@@ -16,6 +17,7 @@
1617
import jp.studyplus.android.sdk.service.api.StudyplusApi;
1718
import jp.studyplus.android.sdk.service.api.response.ErrorResponse;
1819
import jp.studyplus.android.sdk.service.api.response.SuccessfulResponse;
20+
import jp.studyplus.android.sdk.service.auth.AccessTokenNotFound;
1921
import jp.studyplus.android.sdk.service.auth.AuthTransit;
2022
import jp.studyplus.android.sdk.service.auth.CertificationStore;
2123
import jp.studyplus.android.sdk.service.studyrecord.StudyRecordBuilder;
@@ -57,7 +59,13 @@ public void onClick(View v) {
5759
.setDurationSeconds(2 * 60)
5860
.build());
5961

60-
StudyplusApi.getClient(context).send(request.with(this));
62+
try {
63+
StudyplusApi.getClient(context).send(request.with(this));
64+
} catch (AccessTokenNotFound e) {
65+
e.printStackTrace();
66+
Toast.makeText(context, R.string. sample_certification_no_access_token, Toast.LENGTH_SHORT)
67+
.show();
68+
}
6169
}
6270

6371
@Subscribe
@@ -84,10 +92,16 @@ private OnClickToAuth(Activity activity) {
8492
}
8593
@Override
8694
public void onClick(View v) {
87-
AuthTransit.from(activity).startActivity(
88-
context.getString(R.string.sample_consumer_key),
89-
context.getString(R.string.sample_consumer_key_secret)
90-
);
95+
try {
96+
AuthTransit.from(activity).startActivity(
97+
context.getString(R.string.sample_consumer_key),
98+
context.getString(R.string.sample_consumer_key_secret)
99+
);
100+
} catch (ActivityNotFoundException e) {
101+
e.printStackTrace();
102+
Toast.makeText(context, R.string.sample_certification_studyplus_not_found, Toast.LENGTH_SHORT)
103+
.show();
104+
}
91105
}
92106
}
93107

SDKExample/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@
44
<string name="app_name">SDK Example</string>
55
<string name="hello_world">Hello world!!!</string>
66

7+
<string name="sample_certification_no_access_token">アクセストークンがありません。先に認証をしてください。</string>
8+
<string name="sample_certification_studyplus_not_found">Studyplus 2.14.0 以上のインストールが必要です。</string>
79
</resources>

StudyplusAndroidSDK/src/main/java/jp/studyplus/android/sdk/service/api/StudyplusApi.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.content.Context;
44

5+
import jp.studyplus.android.sdk.service.auth.AccessTokenNotFound;
56
import jp.studyplus.android.sdk.service.auth.CertificationStore;
67

78

@@ -10,7 +11,12 @@
1011
*/
1112
public class StudyplusApi {
1213

13-
public static ApiClient getClient(Context context){
14+
/**
15+
* @param context Specifies application context.
16+
* @return client for StudyplusAPI
17+
* @throws AccessTokenNotFound
18+
*/
19+
public static ApiClient getClient(Context context) {
1420
ApiCertification certification = CertificationStore.create(context).getDefault();
1521
return new ApiClient(certification);
1622
}

StudyplusAndroidSDK/src/main/java/jp/studyplus/android/sdk/service/auth/AuthTransit.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package jp.studyplus.android.sdk.service.auth;
22

33
import android.app.Activity;
4+
import android.content.ActivityNotFoundException;
45
import android.content.Intent;
56
import android.net.Uri;
67

@@ -24,7 +25,14 @@ public AuthTransit setRequestCode(int requestCode){
2425
return new AuthTransit(activity, requestCode);
2526
}
2627

27-
public void startActivity(String consumerKey, String consumerSecret){
28+
/**
29+
* Start the certification {@link Activity} for API.
30+
*
31+
* @param consumerKey for API
32+
* @param consumerSecret for API
33+
* @throws ActivityNotFoundException when not installed Studyplus application or un-supported version.
34+
*/
35+
public void startActivity(String consumerKey, String consumerSecret) {
2836
Intent intent = new Intent();
2937
intent.setAction(Intent.ACTION_VIEW);
3038
intent.putExtra("consumer_key", consumerKey);

StudyplusAndroidSDK/src/main/java/jp/studyplus/android/sdk/service/auth/CertificationStore.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,13 @@ private Optional<String> findAccessToken(){
4646
return Optional.fromNullable(preferences.getString(KEY_ACCESS_TOKEN, null));
4747
}
4848

49-
public ApiCertification getDefault(){
49+
/**
50+
* Return the basic {@link ApiCertification} instance for API.
51+
*
52+
* @return certification instance for API.
53+
* @throws AccessTokenNotFound
54+
*/
55+
public ApiCertification getDefault() {
5056
Optional<String> token = findAccessToken();
5157
if (!token.isPresent()){
5258
throw new AccessTokenNotFound();

0 commit comments

Comments
 (0)