我遇到一个问题,三星Galaxy S7 Edge每次startForeground()
在我的前台服务中使用弹出通知时都会在其通知中进行状态更新.
首先,此问题出现在所有Android 8.0设备上,但很容易修复,我的通知通道优先级设置为IMPORTANCE_LOW
.但问题仍然存在于三星设备上.
所以,问题是,如何在Samsung 8.0+设备上静默更新前台服务通知?
我的代码如下.
申请类:
override fun onCreate() {
super.onCreate()
//other code
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
notificationManager.createNotificationChannels(listOf(
//
NotificationChannel(MY_NOTIFICATION_CHANNEL, "My channel", NotificationManager.IMPORTANCE_LOW).apply {
setSound(null, null)
}
//
))
}
}
Run Code Online (Sandbox Code Playgroud)
服务开始前景:
val notification = NotificationCompat.Builder(this, MY_NOTIFICATION_CHANNEL)
.setSmallIcon(android.R.drawable.stat_sys_warning)
.setColor(App.context().resources.getColor(R.color.primary_dark))
.setContentText(if (/*logic*/) "This" else "That")
.addAction(0, if (enable) "Disable" else "Enable", firstIntent)
.addAction(0, "Another action", secondIntent)
.build()
startForeground(MY_NOTIFICATION_ID, notification)
Run Code Online (Sandbox Code Playgroud) 嘿伙计们,我正试图制定一个意图,开始与某个人进行Skype对话.看完整个堆栈溢出后,我仍然无法使其正常工作.这是我的代码:
String skypeUri = "skype:name?chat";
Intent intent = new Intent();
intent.setData(Uri.parse(skypeUri));
intent.setComponent(new ComponentName("com.skype.raider", "com.skype.raider.Main"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
我的意图过滤器:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
<data android:scheme="skype" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
它带我到Skype,但只到它的主页,没有打开对话.任何帮助,将不胜感激.
我在尝试发送多部分 SMS 消息时收到来自三星设备的崩溃日志,这是导致崩溃的行:
SmsManager.getDefault().sendMultipartTextMessage(phone, null, SmsManager.getDefault().divideMessage(message), null, null)
Run Code Online (Sandbox Code Playgroud)
其中phone
是完全指定的不可为空的电话号码,并且message
是String
仅包含 ASCI 符号的长(最多 300 个字符)。唯一可能值得注意的是它可能包含\n\n
用于文本分离。
这是崩溃日志:
Fatal Exception: java.lang.NullPointerException
Attempt to invoke interface method 'java.util.Iterator java.lang.Iterable.iterator()' on a null object reference
android.os.Parcel.readException (Parcel.java:1699)
android.os.Parcel.readException (Parcel.java:1646)
com.android.internal.telephony.ISms$Stub$Proxy.sendMultipartTextForSubscriber (ISms.java:1719)
android.telephony.SmsManager.sendMultipartTextMessageInternal (SmsManager.java:576)
android.telephony.SmsManager.sendMultipartTextMessage (SmsManager.java:544)
Run Code Online (Sandbox Code Playgroud)
我试图查看SmsManager
崩溃日志中指定行的来源,但无济于事 - 似乎它已被 OEM 修改。
这也不应该是权限问题,因为我在执行该sendMultipartTextMessage
行之前检查了 SMS 权限。
崩溃发生在三星 Galaxy S6 和 J530F 手机上。除了这些之外,它从未被报道过。不幸的是,我没有三星设备来测试这个。
有没有人遇到过这个问题?提前致谢!
我已使用 Google Play 控制台多 APK 交付方法将 Android 和 WearOS 应用程序作为单独的 APK 发布。
从各自的设备浏览时,可以发现这两个应用程序 - 手机上的 Android 应用程序和手表上的 WearOS 应用程序。此外,当手机应用程序安装在 Android 设备上时,我可以在我的 WearOS 设备上看到我可以在 Play 商店应用程序的“手机上的应用程序”屏幕上安装配套应用程序。
Google 的 WearOS 官方文档声明如下:
在运行 Wear 2.0 的设备上,当用户安装具有关联手表应用(嵌入式 APK 或通过 Play 管理中心上传的 APK)的手机应用时,用户会收到有关可用手表应用的手表通知。点击通知会打开手表 Play 商店,让用户可以选择安装手表应用程序。
但是,当手机上安装 Android 应用程序时,没有任何反应。此外,用户不知道该应用程序具有 WearOS 配套应用程序,因为它在手机 Play 商店应用程序或网站上不可见。手表也是如此——当用户从他们的 WearOS 设备上发现我的应用程序并安装它时,手机对应的应用程序不会安装,用户也不会收到通知。
WearOS 应用程序不是独立的,因此需要手机应用程序才能运行。它具有相同的包名称并使用相同的密钥进行签名。所有通知都可以在手表和手机上的 WearOS 应用程序上进行。
那么,有没有一种方法可以自动安装 WearOS 应用程序,或者至少让用户知道他们可以安装它?谢谢!
我正在努力使用Google VR SDK VrVideoView
.安装我的应用程序的设备肯定会以横向方向放置,并且已经安装在VR耳机中.为了即时切换我正在使用的全屏立体声模式:
vrVideoView.setDisplayMode(VrWidgetView.DisplayMode.FULLSCREEN_STEREO);
Run Code Online (Sandbox Code Playgroud)
但是当视频开始播放时,会出现"将您的手机放入观看者"消息几秒钟.