GoogleSheets APIとAndroidStudioの連携
こちらのページ下部の長いコードは適切にコピペすればうまく始動してくれます。
https://developers.google.com/sheets/api/quickstart/android
この長いコードをMainActivityに入れてあり、レイアウトをこっちで設定して「button1を押したらシート1のB21に書き込む」ようなことはできました。
それはonCreateメソッドにGoogleAPI認証コードを取得するための
mService = new com.google.api.services.sheets.v4.Sheets.Builder(
transport, jsonFactory, credential)
.setApplicationName("Google Sheets API Android Quickstart")
.build();
を実行することによって可能になります。そして上の変数mServiceを作るために様々なメソッドを呼び出しており、それらのメソッドはthis(MainActivityのみ)にしか使えないようになっています。
MainActivity→SubActivityに遷移はIntentを使ってデータを投げれるので問題ありませんが、SubActivityの状態からmServiceなど使ってGoogleAPIを通し、セルにデータを書き込むにはどうすればよいでしょうか?
SubActivityからIntentを使ってのonCreateは不可能でした。
またMainActivityは最初に起動するActictivityなのでGetIntentが成り立ちません。
MainActivity ma = new MainActivity();
ma.getResultsFromApi(0);
E/AndroidRuntime: FATAL EXCEPTION: main
Process: kanri.kintai, PID: 24031
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference
at android.content.ContextWrapper.getPackageManager(ContextWrapper.java:91)
at com.google.android.gms.common.zzo.isGooglePlayServicesAvailable(Unknown Source)
at com.google.android.gms.common.zze.isGooglePlayServicesAvailable(Unknown Source)
at com.google.android.gms.common.GoogleApiAvailability.isGooglePlayServicesAvailable(Unknown Source)
at kanri.kintai.MainActivity.isGooglePlayServicesAvailable(MainActivity.java:272)
上記エラー出力の一番下の行のエラー(272行目)
private boolean isGooglePlayServicesAvailable() {
GoogleApiAvailability apiAvailability =
GoogleApiAvailability.getInstance();
// 272行目
final int connectionStatusCode =
apiAvailability.isGooglePlayServicesAvailable(this);
return connectionStatusCode == ConnectionResult.SUCCESS;
}