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 件のコメント :
コメントを投稿