Index
androidアプリ開発で暗黙的インテントを呼ぶときに、呼び出せるアプリが存在するかチェックする実装をしていた時に出会った警告。
実装したコードはこんな感じ
1 2 3 4 5 6 7 8 9 10 |
fun createAlarm(message: String, hour: Int, minutes: Int) { val intent = Intent(AlarmClock.ACTION_SET_ALARM).apply { putExtra(AlarmClock.EXTRA_MESSAGE, message) putExtra(AlarmClock.EXTRA_HOUR, hour) putExtra(AlarmClock.EXTRA_MINUTES, minutes) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } } |
出てきた警告はこんな感じ。
1 |
Consider adding a queries declaration to your manifest when calling this method. |
developersに書いてある通りに実装したのに何故だろうと思っていましたが、解決策がわかったのでシェアします。
解決策は2つあります。
1 2 3 4 5 6 7 8 9 10 |
@SuppressLint("QueryPermissionsNeeded") public void createAlarm(String message, int hour, int minutes) { Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM) .putExtra(AlarmClock.EXTRA_MESSAGE, message) .putExtra(AlarmClock.EXTRA_HOUR, hour) .putExtra(AlarmClock.EXTRA_MINUTES, minutes); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } } |
1 2 3 4 5 6 7 8 9 |
public void createAlarm(String message, int hour, int minutes) { Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM) .putExtra(AlarmClock.EXTRA_MESSAGE, message) .putExtra(AlarmClock.EXTRA_HOUR, hour) .putExtra(AlarmClock.EXTRA_MINUTES, minutes); if (getPackageManager().resolveActivity(intent,0) != null) { startActivity(intent); } } |