Skip to content

Commit 7d67036

Browse files
author
aleien
committed
Building notifications, opening Ya.Music and Ya.Radio
1 parent 2891772 commit 7d67036

File tree

25 files changed

+71
-26
lines changed

25 files changed

+71
-26
lines changed

.idea/runConfigurations.xml

Lines changed: 0 additions & 12 deletions
This file was deleted.

app/src/main/java/ru/aleien/yapplication/ListArtistsActivity.java

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package ru.aleien.yapplication;
22

33
import android.app.NotificationManager;
4+
import android.app.PendingIntent;
45
import android.content.BroadcastReceiver;
56
import android.content.Context;
67
import android.content.Intent;
@@ -22,6 +23,7 @@
2223
import android.view.MenuItem;
2324
import android.widget.Toast;
2425

26+
import ru.aleien.yapplication.utils.IntentBuilder;
2527
import ru.aleien.yapplication.utils.Utils;
2628

2729
public class ListArtistsActivity extends AppCompatActivity implements MainView {
@@ -127,25 +129,37 @@ public void onBackPressed() {
127129
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
128130
}
129131

132+
// TODO: Вынести в отдельный класс
133+
// TODO: При открытой странице инфо об артисте, открывать страницу артиста
130134
private void showHeadphonesNotification(boolean wiredHeadsetOn) {
131-
String headphonesMessage = wiredHeadsetOn ? "Headphones are plugged in" : "Headphones are unplugged";
132-
Toast.makeText(ListArtistsActivity.this, headphonesMessage, Toast.LENGTH_LONG).show();
135+
Intent musicIntent = IntentBuilder.buildOpenAppOrMarketPageIntent("ru.yandex.music", this);
136+
Intent radioIntent = IntentBuilder.buildOpenAppOrMarketPageIntent("ru.yandex.radio",this);
133137

134-
NotificationCompat.Builder mBuilder =
135-
new NotificationCompat.Builder(this)
136-
.setSmallIcon(R.drawable.ic_stat_hardware_headset)
137-
.setContentTitle("My notification")
138-
.setContentText("Hello World!");
138+
PendingIntent musicPendingIntent = PendingIntent.getActivity(this, 1010, musicIntent, 0);
139+
PendingIntent radioPendingIntent = PendingIntent.getActivity(this, 1020, radioIntent, 0);
139140

140141
int musicNotificationId = 001;
141-
int radioNotificationId = 002;
142142

143-
NotificationManager mNotifyMgr =
144-
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
143+
if (wiredHeadsetOn) {
144+
NotificationCompat.Builder musicNotificationBuilder =
145+
new NotificationCompat.Builder(this)
146+
.setSmallIcon(R.drawable.ic_stat_hardware_headset)
147+
.setColor(ContextCompat.getColor(this, R.color.colorPrimary))
148+
.setContentTitle("Headphones plugged in")
149+
.addAction(R.drawable.ic_stat_yamusic, "Ya.Music", musicPendingIntent)
150+
.addAction(R.drawable.ic_stat_hardware_headset, "Ya.Radio", radioPendingIntent)
151+
.setContentText("Open in:");
145152

146-
mNotifyMgr.notify(musicNotificationId, mBuilder.build());
147-
mNotifyMgr.notify(radioNotificationId, mBuilder.build());
153+
NotificationManager mNotifyMgr =
154+
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
148155

156+
mNotifyMgr.notify(musicNotificationId, musicNotificationBuilder.build());
157+
} else {
158+
NotificationManager mNotifyMgr =
159+
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
160+
161+
mNotifyMgr.cancel(musicNotificationId);
162+
}
149163

150164
}
151165

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package ru.aleien.yapplication.utils;
2+
3+
import android.content.ActivityNotFoundException;
4+
import android.content.Context;
5+
import android.content.Intent;
6+
import android.content.pm.PackageManager;
7+
import android.net.Uri;
8+
9+
/**
10+
* Created by user on 19.07.16.
11+
*/
12+
public class IntentBuilder {
13+
private static final String playStore = "market://details?id=";
14+
15+
public static Intent buildOpenAppOrMarketPageIntent(String pack, Context context) {
16+
17+
try {
18+
if (Utils.checkPackageExists(context, pack)) {
19+
PackageManager pm = context.getPackageManager();
20+
return pm.getLaunchIntentForPackage(pack);
21+
} else {
22+
Intent intent = new Intent(Intent.ACTION_VIEW);
23+
intent.setData(Uri.parse(playStore + pack));
24+
return intent;
25+
}
26+
} catch (ActivityNotFoundException e) {
27+
Intent intent = new Intent(Intent.ACTION_VIEW);
28+
intent.setData(Uri.parse(playStore + pack));
29+
return intent;
30+
}
31+
32+
}
33+
34+
}

app/src/main/java/ru/aleien/yapplication/utils/Utils.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,5 +91,14 @@ public static String getAppVersion(Context context) {
9191
return versionCode;
9292
}
9393

94+
public static boolean checkPackageExists(Context context, String targetPackage) {
95+
try {
96+
context.getPackageManager().getPackageInfo(targetPackage, PackageManager.GET_META_DATA);
97+
} catch (PackageManager.NameNotFoundException e) {
98+
return false;
99+
}
100+
return true;
101+
}
102+
94103

95104
}
Loading
Loading
3.64 KB
Loading
Loading
761 Bytes
Loading
2.21 KB
Loading

0 commit comments

Comments
 (0)