3
Settings.canDrawOverlays
を使用して、API> = 23でこの権限を付与されているかどうかを確認できるので、ユーザーが古いAPISにあるかどうかを確認できますか?APIの設定.canDrawOverlays <23
このアクセス許可は、API < 23で自動的に許可されていますか、確認する必要はありませんか?
現在、私は許可が与えられた後、API 23以降でサービスを開始します。
@SuppressLint("NewApi")
public void checkDrawOverlayPermission() {
if(Build.VERSION.SDK_INT >= 23) {
/** check if we already have permission to draw over other apps */
if (!Settings.canDrawOverlays(this)) {
/** if not construct intent to request permission */
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
/** request permission via start activity for result */
startActivityForResult(intent, REQUEST_CODE);
} else {
startService(new Intent(this, ChatHeadService.class));
}
}
}
ただし、ユーザーがAPI < = 22の場合はどうなりますか?アプリケーションをクラッシュさせずにサービスを開始するにはどうすればいいですか?
Marshmallowの下でこの許可を求める必要はありませんので、これらのシステムでサービスを実行することは安全です。デフォルトでオーバーレイを描画することができます。 – mhenryk
ありがとうございます。@ @mryryk – TheUnreal
もちろん、マニフェストの許可が必要ですが、これはすべてのプラットフォームで当てはまります。あなたのアプリを公開してGoogle Playストアで署名された場合は、参照のために_ _許可 –
mhenryk