前回の課題
とりあえずSMARTalkを起動するアプリはできましたが、
何も画面を表示せずに(バックグラウンドで)SMARTalkを起動&終了させることが課題でした。
対策
① ウィジェットからSMARTalkを起動させる
② アクティビティ(画面)のないアプリを作る
対策として上の2つを考えました。
①は、できるのでしょうが、よくわからなかったのでパスしました。
②は、アクティビティがないとjavaのコードが書けなかったので、これもできませんでした。
(Androidのjavaコードは、アクティビティ上に書くようです。)
①は、できるのでしょうが、よくわからなかったのでパスしました。
②は、アクティビティがないとjavaのコードが書けなかったので、これもできませんでした。
(Androidのjavaコードは、アクティビティ上に書くようです。)
苦肉の策で考えてのが
③ onCreate()メソッド直後にSMARTalkを起動&終了させる
です。
コードを下に示します。
package winspire.kentaro.gmail.com.refreshsmartalk; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.content.Intent; import android.content.pm.PackageManager; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //onCreateでSMARTalkを起動する PackageManager pm = getPackageManager(); Intent newIntent = pm.getLaunchIntentForPackage("jp.co.fusioncom.smartalk.android"); startActivity(newIntent); //スリープさせる try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } //ホーム画面に移動する Intent homeIntent = new Intent(Intent.ACTION_MAIN); homeIntent.addCategory(Intent.CATEGORY_HOME); this.startActivity(homeIntent); } }
onCreate()メソッドの直後にSMARTalkを起動して、ホーム画面に戻るだけなので、単純明快なコードです。
ただ、このコードだとMainActivityは必ず表示されちゃうんですよね。
(↓この画面)
すぐに閉じちゃうので、あまり気にはなりませんが完全に表示させないようにしたいです。
いかがでしたでしょうか。
本当に少しずつですが、ゴールに向かっているような気がします。
コメント