Skip to content

Commit 7a470f5

Browse files
refactor the Android TV-App prompt message (#33469)
* refactor the class MatterCommissioningPrompter.java,don't need Activity no more to avoid memory leak; * Restyled by google-java-format --------- Co-authored-by: Restyled.io <commits@restyled.io>
1 parent 443bb9c commit 7a470f5

16 files changed

+959
-242
lines changed

examples/tv-app/android/App/platform-app/build.gradle

+4-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ android {
77

88
defaultConfig {
99
applicationId "com.matter.tv.server"
10-
minSdk 24
10+
minSdk 26
1111
targetSdk 30
1212
versionCode 1
1313
versionName "1.0"
@@ -57,6 +57,9 @@ android {
5757
// ]
5858
}
5959
}
60+
buildFeatures {
61+
viewBinding = true
62+
}
6063
}
6164

6265
dependencies {

examples/tv-app/android/App/platform-app/src/main/AndroidManifest.xml

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
2525
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
2626
tools:ignore="QueryAllPackagesPermission" />
27+
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
2728

2829
<application
2930
android:allowBackup="true"
@@ -36,6 +37,7 @@
3637
android:theme="@style/Theme.MatterTVSlave">
3738

3839
<activity android:name="com.matter.tv.server.MainActivity"
40+
android:exported="true"
3941
android:launchMode="singleTask">
4042
<intent-filter>
4143
<action android:name="android.intent.action.MAIN" />

examples/tv-app/android/App/platform-app/src/main/java/com/matter/tv/server/MainActivity.java

+24-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package com.matter.tv.server;
22

3+
import android.content.Intent;
4+
import android.net.Uri;
35
import android.os.Bundle;
6+
import android.provider.Settings;
7+
import androidx.appcompat.app.AlertDialog;
48
import androidx.appcompat.app.AppCompatActivity;
59
import androidx.fragment.app.Fragment;
610
import com.google.android.material.bottomnavigation.BottomNavigationView;
711
import com.matter.tv.server.fragments.ContentAppFragment;
812
import com.matter.tv.server.fragments.QrCodeFragment;
913
import com.matter.tv.server.fragments.TerminalFragment;
10-
import com.matter.tv.server.service.MatterServant;
1114
import java.util.LinkedHashMap;
1215

1316
public class MainActivity extends AppCompatActivity {
@@ -41,16 +44,32 @@ protected void onCreate(Bundle savedInstanceState) {
4144
super.onCreate(savedInstanceState);
4245
setContentView(R.layout.activity_main);
4346

44-
// MainActivity is needed to launch dialog prompt
45-
// in UserPrompter
46-
MatterServant.get().setActivity(this);
47-
4847
BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation);
4948
bottomNavigationView.setOnItemSelectedListener(navListener);
5049

5150
getSupportFragmentManager()
5251
.beginTransaction()
5352
.replace(R.id.fragment_container_view, new QrCodeFragment())
5453
.commit();
54+
checkOverlayPermission();
55+
}
56+
57+
private void checkOverlayPermission() {
58+
if (!Settings.canDrawOverlays(this)) {
59+
AlertDialog.Builder builder = new AlertDialog.Builder(this);
60+
builder
61+
.setMessage("Allow permission to display over other apps")
62+
.setTitle("Request overlay permission")
63+
.setPositiveButton(
64+
"Ok",
65+
(dialog, which) -> {
66+
dialog.dismiss();
67+
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
68+
intent.setData(Uri.parse("package:" + getPackageName()));
69+
startActivity(intent);
70+
})
71+
.create()
72+
.show();
73+
}
5574
}
5675
}

0 commit comments

Comments
 (0)