Skip to content

Commit d857f7b

Browse files
committed
[Android] added airplane mode, screen on/off receivers, attached information when pushing notification (to navigate to certain pages)
updated MainActivity to singleInstance, fixed view recovery on LifecycleActivity
1 parent 97a2d0b commit d857f7b

36 files changed

+1353
-649
lines changed
0 Bytes
Binary file not shown.

AAD-Preparation/.idea/workspace.xml

Lines changed: 414 additions & 463 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

AAD-Preparation/app/src/androidTest/java/com/catherine/materialdesignapp/BackgroundActivityTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,6 @@ public void verifyVisual() {
6363
onView(withId(R.id.rv_features)).perform(RecyclerViewActions.scrollToPosition(i))
6464
.check(matches(Utils.atPosition(i, hasDescendant(withText(titles[i])))))
6565
.check(matches(Utils.atPosition(i, hasDescendant(withText(subtitles[i])))));
66-
67-
// TODO test SimpleDraweeView
6866
}
6967
}
7068

AAD-Preparation/app/src/main/AndroidManifest.xml

Lines changed: 110 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -12,150 +12,136 @@
1212
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
1313
<uses-permission android:name="android.permission.READ_CONTACTS"/>
1414

15+
<!--extractNativeLibs relates to dynamic delivery-->
16+
<!--resizeableActivity enables/disables multi-window display-->
17+
<!--supportsPictureInPicture supports PictureInPicture-->
1518
<application
1619
android:name=".MyApplication"
1720
android:allowBackup="true"
1821
android:extractNativeLibs="${extractNativeLibs}"
22+
android:resizeableActivity="true"
23+
android:supportsPictureInPicture="false"
1924
android:fullBackupContent="true"
2025
android:icon="@mipmap/ic_launcher"
2126
android:label="@string/app_name"
2227
android:roundIcon="@mipmap/ic_launcher_round"
2328
android:supportsRtl="true"
24-
android:theme="@style/AppTheme.NoActionBar"
25-
tools:targetApi="m">
26-
<activity
27-
android:name=".activities.MainActivity"
28-
android:configChanges="orientation|keyboardHidden">
29+
android:theme="@style/AppTheme.NoActionBar">
30+
31+
<activity android:name=".activities.MainActivity"
32+
android:launchMode="singleInstance"
33+
android:taskAffinity="com.catherine.materialdesignapp"
34+
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden">
2935
<intent-filter>
3036
<action android:name="android.intent.action.MAIN"/>
31-
3237
<category android:name="android.intent.category.LAUNCHER"/>
3338
</intent-filter>
3439

3540
<!-- THIS WORKS ON API 23+, open https://guarded-basin-12509.herokuapp.com to test app links -->
36-
<intent-filter
37-
android:autoVerify="true"
38-
tools:targetApi="m">
41+
<intent-filter android:autoVerify="true"
42+
tools:targetApi="m">
3943
<action android:name="android.intent.action.VIEW"/>
4044

4145
<category android:name="android.intent.category.DEFAULT"/>
4246
<category android:name="android.intent.category.BROWSABLE"/>
4347

44-
<data
45-
android:host="guarded-basin-12509.herokuapp.com"
46-
android:scheme="https"/>
48+
<data android:host="guarded-basin-12509.herokuapp.com"
49+
android:scheme="https"/>
4750
</intent-filter>
4851
</activity>
4952

50-
<activity
51-
android:name=".activities.UIComponentsActivity"
52-
android:configChanges="orientation|keyboardHidden"
53-
android:parentActivityName=".activities.MainActivity">
53+
<activity android:name=".activities.UIComponentsActivity"
54+
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden"
55+
android:parentActivityName=".activities.MainActivity">
5456

55-
<meta-data
56-
android:name="android.support.PARENT_ACTIVITY"
57-
android:value=".activities.MainActivity"/>
57+
<meta-data android:name="android.support.PARENT_ACTIVITY"
58+
android:value=".activities.MainActivity"/>
5859
</activity>
59-
<activity
60-
android:name=".activities.LifecycleActivity"
61-
android:configChanges="orientation|keyboardHidden"
62-
android:parentActivityName=".activities.MainActivity">
63-
64-
<meta-data
65-
android:name="android.support.PARENT_ACTIVITY"
66-
android:value=".activities.MainActivity"/>
60+
61+
<activity android:name=".activities.LifecycleActivity"
62+
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden"
63+
android:parentActivityName=".activities.MainActivity">
64+
65+
<meta-data android:name="android.support.PARENT_ACTIVITY"
66+
android:value=".activities.MainActivity"/>
6767
</activity>
68-
<activity
69-
android:name=".activities.AppComponentsActivity"
70-
android:configChanges="orientation|keyboardHidden"
71-
android:parentActivityName=".activities.MainActivity">
72-
73-
<meta-data
74-
android:name="android.support.PARENT_ACTIVITY"
75-
android:value=".activities.MainActivity"/>
68+
69+
<activity android:name=".activities.AppComponentsActivity"
70+
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden"
71+
android:parentActivityName=".activities.MainActivity">
72+
73+
<meta-data android:name="android.support.PARENT_ACTIVITY"
74+
android:value=".activities.MainActivity"/>
7675
</activity>
77-
<activity
78-
android:name=".activities.BackgroundActivity"
79-
android:configChanges="orientation|keyboardHidden"
80-
android:parentActivityName=".activities.MainActivity">
81-
82-
<meta-data
83-
android:name="android.support.PARENT_ACTIVITY"
84-
android:value=".activities.MainActivity"/>
76+
<activity android:name=".activities.BackgroundActivity"
77+
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden"
78+
android:parentActivityName=".activities.MainActivity">
79+
80+
<meta-data android:name="android.support.PARENT_ACTIVITY"
81+
android:value=".activities.MainActivity"/>
8582
</activity>
86-
<activity
87-
android:name=".activities.NotificationActivity"
88-
android:configChanges="orientation|keyboardHidden"
89-
android:parentActivityName=".activities.MainActivity">
90-
91-
<meta-data
92-
android:name="android.support.PARENT_ACTIVITY"
93-
android:value=".activities.MainActivity"/>
83+
84+
<activity android:name=".activities.NotificationActivity"
85+
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden"
86+
android:parentActivityName=".activities.MainActivity">
87+
88+
<meta-data android:name="android.support.PARENT_ACTIVITY"
89+
android:value=".activities.MainActivity"/>
9490
</activity>
95-
<activity
96-
android:name=".activities.DynamicDeliveryActivity"
97-
android:configChanges="orientation|keyboardHidden"
98-
android:parentActivityName=".activities.MainActivity">
99-
100-
<meta-data
101-
android:name="android.support.PARENT_ACTIVITY"
102-
android:value=".activities.MainActivity"/>
91+
<activity android:name=".activities.DynamicDeliveryActivity"
92+
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden"
93+
android:parentActivityName=".activities.MainActivity">
94+
95+
<meta-data android:name="android.support.PARENT_ACTIVITY"
96+
android:value=".activities.MainActivity"/>
10397
</activity>
104-
<activity
105-
android:name=".activities.AlbumDetailsActivity"
106-
android:configChanges="orientation|keyboardHidden"
107-
android:parentActivityName=".activities.UIComponentsActivity">
108-
109-
<meta-data
110-
android:name="android.support.PARENT_ACTIVITY"
111-
android:value=".activities.UIComponentsActivity"/>
98+
99+
<activity android:name=".activities.AlbumDetailsActivity"
100+
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden"
101+
android:parentActivityName=".activities.UIComponentsActivity">
102+
103+
<meta-data android:name="android.support.PARENT_ACTIVITY"
104+
android:value=".activities.UIComponentsActivity"/>
112105
</activity>
113-
<activity
114-
android:name=".activities.CursorLoaderActivity"
115-
android:configChanges="orientation|keyboardHidden"
116-
android:parentActivityName=".activities.MainActivity">
117-
118-
<meta-data
119-
android:name="android.support.PARENT_ACTIVITY"
120-
android:value=".activities.MainActivity"/>
106+
<activity android:name=".activities.CursorLoaderActivity"
107+
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden"
108+
android:parentActivityName=".activities.MainActivity">
109+
110+
<meta-data android:name="android.support.PARENT_ACTIVITY"
111+
android:value=".activities.MainActivity"/>
121112
</activity>
122113

123114
<!-- this is the searchable activity, it performs searches -->
124-
<activity
125-
android:name=".activities.SearchableSongsActivity"
126-
android:configChanges="orientation|keyboardHidden"
127-
android:launchMode="singleTop"
128-
android:parentActivityName=".activities.MainActivity">
115+
<activity android:name=".activities.SearchableSongsActivity"
116+
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden"
117+
android:launchMode="singleTop"
118+
android:parentActivityName=".activities.MainActivity">
129119
<intent-filter>
130120
<action android:name="android.intent.action.SEARCH"/>
131-
132121
<category android:name="android.intent.category.DEFAULT"/>
133122
<category android:name="android.intent.category.BROWSABLE"/>
134123
</intent-filter>
124+
135125
<intent-filter>
136126
<action android:name="com.google.android.gms.actions.SEARCH_ACTION"/>
137-
138127
<category android:name="android.intent.category.DEFAULT"/>
139128
<category android:name="android.intent.category.BROWSABLE"/>
140129
</intent-filter>
141130

142-
<meta-data
143-
android:name="android.app.searchable"
144-
android:resource="@xml/searchable"/>
131+
<meta-data android:name="android.app.searchable"
132+
android:resource="@xml/searchable"/>
145133
</activity>
146134

147135
<!-- this activity enables the search dialog to initiate searches
148136
in the SearchableSongsActivity -->
149137

150-
<provider
151-
android:name=".providers.SearchSuggestionProvider"
152-
android:authorities="com.catherine.materialdesignapp.providers.SearchSuggestionProvider"
153-
android:exported="false"/>
138+
<provider android:name=".providers.SearchSuggestionProvider"
139+
android:authorities="com.catherine.materialdesignapp.providers.SearchSuggestionProvider"
140+
android:exported="false"/>
154141

155-
<provider
156-
android:name=".providers.AlbumsProvider"
157-
android:authorities="com.catherine.materialdesignapp.providers.AlbumsProvider"
158-
android:exported="true"/>
142+
<provider android:name=".providers.AlbumsProvider"
143+
android:authorities="com.catherine.materialdesignapp.providers.AlbumsProvider"
144+
android:exported="true"/>
159145

160146
<!--Services-->
161147
<service
@@ -165,35 +151,48 @@
165151
<action android:name="com.catherine.materialdesignapp.startMusicPlayerService"/>
166152
</intent-filter>
167153
</service>
168-
<service
169-
android:name=".services.NetworkHealthService"
170-
android:exported="false">
154+
<service android:name=".services.NetworkHealthService"
155+
android:exported="false">
171156
<intent-filter>
172157
<action android:name="com.catherine.materialdesignapp.startNetworkHealthService"/>
173158
</intent-filter>
174159
</service>
175-
<service
176-
android:name=".services.LogcatService"
177-
android:exported="false">
160+
<service android:name=".services.LogcatService"
161+
android:exported="false">
178162
<intent-filter>
179163
<action android:name="com.catherine.materialdesignapp.startLogcatService"/>
180164
</intent-filter>
181165
</service>
166+
<service android:name=".services.ScreenOnOffService"
167+
android:exported="false">
168+
<intent-filter>
169+
<action android:name="com.catherine.materialdesignapp.startScreenOnOffService"/>
170+
</intent-filter>
171+
</service>
172+
<service android:name=".services.AirplaneModeService"
173+
android:exported="false">
174+
<intent-filter>
175+
<action android:name="com.catherine.materialdesignapp.startAirplaneModeService"/>
176+
</intent-filter>
177+
</service>
182178
<!--Services-->
183179

184180
<!--JobSchedulers-->
185-
<service
186-
android:name=".services.MusicPlayerJobScheduler"
187-
android:exported="false"
188-
android:permission="android.permission.BIND_JOB_SERVICE"/>
189-
<service
190-
android:name=".services.NetworkHealthJobScheduler"
191-
android:exported="false"
192-
android:permission="android.permission.BIND_JOB_SERVICE"/>
193-
<service
194-
android:name=".services.LogcatJobScheduler"
195-
android:exported="false"
196-
android:permission="android.permission.BIND_JOB_SERVICE"/>
181+
<service android:name=".services.MusicPlayerJobScheduler"
182+
android:exported="false"
183+
android:permission="android.permission.BIND_JOB_SERVICE"/>
184+
<service android:name=".services.NetworkHealthJobScheduler"
185+
android:exported="false"
186+
android:permission="android.permission.BIND_JOB_SERVICE"/>
187+
<service android:name=".services.LogcatJobScheduler"
188+
android:exported="false"
189+
android:permission="android.permission.BIND_JOB_SERVICE"/>
190+
<service android:name=".services.ScreenOnOffJobScheduler"
191+
android:exported="false"
192+
android:permission="android.permission.BIND_JOB_SERVICE"/>
193+
<service android:name=".services.AirplaneModeJobScheduler"
194+
android:exported="false"
195+
android:permission="android.permission.BIND_JOB_SERVICE"/>
197196
<!--JobSchedulers-->
198197

199198
<!--<receiver-->

AAD-Preparation/app/src/main/java/com/catherine/materialdesignapp/MyApplication.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import android.os.Environment;
1212
import android.os.HandlerThread;
1313
import android.util.Log;
14+
import com.catherine.materialdesignapp.services.BusyJobs;
1415
import com.catherine.materialdesignapp.services.NetworkHealthJobScheduler;
1516
import com.catherine.materialdesignapp.services.NetworkHealthService;
1617
import com.catherine.materialdesignapp.utils.FileUtils;
@@ -23,8 +24,6 @@
2324
import java.io.File;
2425
import java.util.Map;
2526

26-
import static com.catherine.materialdesignapp.services.BusyJobs.JOB_NETWORK_STATE;
27-
2827
public class MyApplication extends Application implements Thread.UncaughtExceptionHandler {
2928
private static String TAG = MyApplication.class.getSimpleName();
3029
public static MyApplication INSTANCE;
@@ -72,7 +71,7 @@ public void onCreate() {
7271
try {
7372
JobScheduler jobScheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
7473
ComponentName componentName = new ComponentName(this, NetworkHealthJobScheduler.class);
75-
JobInfo jobInfo = new JobInfo.Builder(JOB_NETWORK_STATE, componentName)
74+
JobInfo jobInfo = new JobInfo.Builder(BusyJobs.JOB_NETWORK_STATE, componentName)
7675
.setRequiresStorageNotLow(false)
7776
.setRequiresBatteryNotLow(true)
7877
.setRequiresCharging(false)

AAD-Preparation/app/src/main/java/com/catherine/materialdesignapp/activities/AppComponentsActivity.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.catherine.materialdesignapp.activities;
22

3+
import android.content.Intent;
34
import android.os.Bundle;
5+
import android.text.TextUtils;
46
import android.util.Log;
57
import android.view.View;
68
import android.widget.FrameLayout;
@@ -71,6 +73,13 @@ public void onTabReselected(TabLayout.Tab tab) {
7173
}
7274
});
7375
setSupportActionBar(toolbar);
76+
77+
Intent intent = getIntent();
78+
if (intent != null && !TextUtils.isEmpty(intent.getAction())) {
79+
String action = intent.getAction();
80+
int pageId = Integer.parseInt(action);
81+
viewpager.setCurrentItem(adapter.getPosition(pageId));
82+
}
7483
switchTo(viewpager.getCurrentItem());
7584
}
7685

0 commit comments

Comments
 (0)