小编Rom*_*nko的帖子

startForeground()始终在Samsung 8.0设备上显示弹出窗口

我遇到一个问题,三星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)

android android-notifications android-8.0-oreo

8
推荐指数
1
解决办法
525
查看次数

来自意图的Skype聊天屏幕

嘿伙计们,我正试图制定一个意图,开始与某个人进行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,但只到它的主页,没有打开对话.任何帮助,将不胜感激.

android uri skype android-intent

7
推荐指数
1
解决办法
985
查看次数

SmsManager 在三星设备上崩溃

我在尝试发送多部分 SMS 消息时收到来自三星设备的崩溃日志,这是导致崩溃的行:

SmsManager.getDefault().sendMultipartTextMessage(phone, null, SmsManager.getDefault().divideMessage(message), null, null)
Run Code Online (Sandbox Code Playgroud)

其中phone是完全指定的不可为空的电话号码,并且messageString仅包含 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 手机上。除了这些之外,它从未被报道过。不幸的是,我没有三星设备来测试这个。

有没有人遇到过这个问题?提前致谢!

android

5
推荐指数
1
解决办法
200
查看次数

如何自动安装 WearOS 配套应用程序和 Android 手机应用程序

我已使用 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 应用程序,或者至少让用户知道他们可以安装它?谢谢!

android google-play google-play-console wear-os

5
推荐指数
1
解决办法
4262
查看次数

有没有办法删除"将手机放入查看器"消息?

我正在努力使用Google VR SDK VrVideoView.安装我的应用程序的设备肯定会以横向方向放置,并且已经安装在VR耳机中.为了即时切换我正在使用的全屏立体声模式:

vrVideoView.setDisplayMode(VrWidgetView.DisplayMode.FULLSCREEN_STEREO); 
Run Code Online (Sandbox Code Playgroud)

但是当视频开始播放时,会出现"将您的手机放入观看者"消息几秒钟.

在此输入图像描述 我不需要它,因为设备已经就位.有没有办法将其删除?提前致谢.

android google-cardboard virtual-reality google-vr

0
推荐指数
1
解决办法
920
查看次数