ServiceからActivityを起動するには、以下のようにします。
Intent intent = new Intent(getApplication(), Activityクラス名.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getApplication().startActivity(intent);
上記の手順では、HOMEボタンでのアプリ切り替え後5秒間は、ほかのActivityを起動できない制限を受けます。
そのような場合は、PendingIntentを使うと解消されます。
Intent intent = new Intent(getApplication(), Activityクラス名.class); PendingIntent pendingIntent = PendingIntent.getActivity(getApplication(), 777, intent, PendingIntent.FLAG_UPDATE_CURRENT); pendingIntent.send();
Android10以降では、サービスからのActivity起動が抑制されているようです。(参照)
android.permission.SYSTEM_ALERT_WINDOWを取得することで解決できます。
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /&rt;
OVERLAY_PERMISSIONを得る処理を実行します。以下の関数は、Permissionがあれば、trueを返し、無ければfalseを返します。
Permissionが無い場合は、設定を行うActivityを表示します。
public static int OVERLAY_PERMISSION_REQ_CODE = 1000;
@TargetApi(Build.VERSION_CODES.M)
public boolean checkPermission_DrawOverlays() {
final Context context = getContext();
if(context == null)return false;
boolean result = Settings.canDrawOverlays(context);
if (!result) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + context.getPackageName()));
startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);
}
return result;
}

0 件のコメント :
コメントを投稿