Androidアプリ間での値の共有についてお聞きしたいです。
アプリAで保存した値(Tokenの様な文字列)を別のアプリBで取得したい場合に、明示的Intentを使って取得するのは変でしょうか?
一応以下の様に仮で実装をしてみて動作することは確認できました。
アプリA(提供側):
パッケージ名:"com.example.testsettingprovidor"
クラス名:"com.example.testsettingprovidor.TokenProvideActivity"
値をIntentに載せてすぐに返して閉じるActivity
Java
1 2 @Override 3 protected void onCreate(Bundle savedInstanceState) { 4 super.onCreate(savedInstanceState); 5 SharedPreferences sp = getSharedPreferences(getPackageName(), MODE_PRIVATE); 6 String token = sp.getString(KEY_SHARED_PREF_TOKEN, null); 7 if(token!=null){ 8 Intent intent = new Intent(); 9 intent.putExtra(MainActivity.KEY_SHARED_PREF_TOKEN,token); 10 setResult(RESULT_OK, intent); 11 }else{ 12 setResult(RESULT_CANCELED); 13 } 14 finish(); 15 }
アプリB(取得側):
button_getというIDのボタンを押すと値をアプリAから取得してtext_displayというIDのTextViewにセットする
Java
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 Button button = findViewById(R.id.button_get); 6 button.setOnClickListener(new View.OnClickListener() { 7 @Override 8 public void onClick(View v) { 9 Intent intent = new Intent(Intent.ACTION_SEND); 10 intent.setClassName("com.example.testsettingprovidor", 11 "com.example.testsettingprovidor.TokenProvideActivity"); 12 startActivityForResult(intent,REQUEST_GET_TOKEN); 13 } 14 }); 15 } 16 17 @Override 18 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { 19 super.onActivityResult(requestCode, resultCode, data); 20 if(requestCode==REQUEST_GET_TOKEN){ 21 if(resultCode == RESULT_OK){ 22 TextView text_display = findViewById(R.id.text_display); 23 String token = data.getStringExtra(KEY_SHARED_PREF_TOKEN); 24 text_display.setText(token); 25 } 26 } 27 } 28
何か他に公式なAPIなどはないのでしょうか?
調べてみたのですが見つけられなくて既存の知識だけで実装したので不安です。
あなたの回答
tips
プレビュー