小编Jus*_*tin的帖子

无法获得WRITE_SETTINGS权限

当我在Android M Preview 3上有一个23的目标API时,我似乎无法获得Manifest.permission.WRITE_SETTTINGS权限.

 requestPermissions(new String[]{Manifest.permission.WRITE_SETTINGS},
              101);
Run Code Online (Sandbox Code Playgroud)

请求权限不会显示我期望的对话框,但如果我未经此许可进行以下调用,

 RingtoneManager.setActualDefaultRingtoneUri(activity, RingtoneManager.TYPE_RINGTONE, ringUri);
Run Code Online (Sandbox Code Playgroud)

电话会议除外,因为我没有这个权限.

我不知道从哪里开始.23有新的铃声API吗?或者这个权限更改只是让任何非系统应用程序无法更改铃声?

android android-6.0-marshmallow

76
推荐指数
8
解决办法
7万
查看次数

如何在Android 8.0中正确更新小部件 - Oreo - API 26

假设我有一个将targetSDKVersion设置为26的应用程序的小部件.此小部件需要100毫秒到10秒才能更新.大部分时间都在1s以下.在Android O之前,如果在我的AppWidgetProvider上调用了onUpdate(),我可以启动后台服务来更新这个小部件.但是,如果您尝试该行为,Android O将返回IllegalStateException.启动前台服务的显而易见的解决方案似乎是一种极端的措施,可以在99%的时间内在10秒以内完成.

可能的解决方案

  • 启动前台服务以更新窗口小部件.用户通知会在10s内消失.
  • 使用JobScheduler尽快安排作业.您的小部件可能会或可能不会更新一段时间.
  • 尝试在广播接收器中完成工作.锁定任何其他应用程序的UI线程.呸.
  • 尝试在小部件接收器中工作.锁定任何其他应用程序的UI线程.呸.
  • 滥用GCM以运行后台服务.很多工作和感觉hacky.

我个人并不喜欢上述任何一种解决方案.希望我错过了一些东西.

(更令人沮丧的是,我的应用程序已经被系统调用onUpdate()加载到内存中.我没有看到如何将我的应用程序加载到内存中以调用onUpdate(),但后来没有给我的应用程序1s更新小部件UI线程正在为任何人节省电池寿命.)

multithreading android widget background-process android-8.0-oreo

30
推荐指数
2
解决办法
4812
查看次数

Android 4.2.2设备离线

我读过几个有类似问题的用户,但我找到的解决方案都没有解决我的问题.

我有几台运行Android 4.2.2的Nexus设备,它们都显示为脱机状态,当我插入它们时,它们都没有显示提示.

我已经尝试过:

  • 拔掉/插入它们
  • 关闭/打开USB调试
  • 重新启动计算机,nexus设备和adb服务器
  • 重新安装驱动程序甚至切换驱动程序到三星ADB驱动程序
  • 确认我正在运行adb 1.0.31
  • 确保我的路径指向adb.exe
  • 删除了我整台计算机上的所有旧adb.exe文件

android offline device adb

20
推荐指数
2
解决办法
2万
查看次数

Android 7.0(Nougat)打盹模式停止Web服务

我有一个带有WiFi锁的Android前台服务,它充当另一个本地设备的Web服务.在打盹模式之前,获取WiFi锁并根据需要提供服务非常有效.

即使关闭了我的应用程序的电池优化功能,当屏幕关闭几分钟时,手机仍然会杀死应用程序.

如何正确警告Android明确地在前台执行客户请求的服务,并且他们此时不希望他们的手机进入睡眠状态?

编辑:这个问题仍然存在于Android 8.0(奥利奥)

android android-wifi android-doze

19
推荐指数
1
解决办法
873
查看次数

Android多窗口支持:检测状态栏是否可见?

借助Android的多窗口支持,如何检测状态栏是否可见?例如,当处于纵向方向时,如果我是顶级应用程序,状态栏可能是可见的,但是当我是底部应用程序时,状态栏可能不可见.现在,我的观点在底部是有趣的,因为我为不再存在的状态栏腾出了空间.

android multi-window

16
推荐指数
1
解决办法
1079
查看次数

Android身份验证错误:"GetToken失败,状态代码为:INVALID_AUDIENCE"

关于这个模糊的错误代码已经有几个问题,但没有人为我解决这个问题,所以我会再试一次.首先,这是用于登录的样板代码.

      GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail()
        .requestServerAuthCode("web app client ID copied from Dev API Console", false)
        .build();


  mGoogleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this, this).addApi(Auth
        .GOOGLE_SIGN_IN_API, gso).build();

  Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
  startActivityForResult(signInIntent, RC_SIGN_IN);
Run Code Online (Sandbox Code Playgroud)

使用此代码,我得到一个对话框,可以选择适当的用户帐户.好极了!但是,然后我在onActivityResult中获取了一个已取消的代码,因此我检查了logcat并注意了标题中的错误消息.然后我搜索有这个问题的其他人,但是我无法弄清楚我的问题是什么.

那么让我们从其他帖子中查看常见问题.

  • Firebase控制台显示我的应用程序已使用正确的SHA-1和SHA-256指纹进行了注册
  • 发布和调试版本都使用相同的密钥库
  • 在Google API管理器中,我的"OAuth许可屏幕"已配置完毕
  • 我还验证了授权重定向URI的域名
  • 我已经重新下载了Firebase GoogleServices.json文件,只是为了确定
  • 没有包名称问题.实际上,Firebase Analytics在这个应用程序中运行得很好
  • 在Play商店开发控制台中,我的OAuth客户端显示在"设置 - > API访问"中
  • 我的Firebase项目在Play商店开发控制台"关联帐户"设置部分中链接
  • 我已经等了10个小时,只是为了看看Google的后端是否需要时间来设置它

对于可搜索性,在标题中的logcat错误消息之后,我得到以下logcat打印.

你有错误的OAuth2相关配置,请检查.详细错误:INVALID_AUDIENCE

android oauth firebase firebase-authentication google-signin

14
推荐指数
1
解决办法
4670
查看次数

带有SectionIndexer的Android RecyclerView

有人知道如何使用SectionIndexer或RecyclerView的替代品?SectionIndexer允许ListView在快速滚动时弹出部分.

android listview sectionindexer android-recyclerview

13
推荐指数
1
解决办法
4976
查看次数

使用Android In-App Billing V3续订订阅时,purchaseToken是否保持不变?

使用Android IAB V3续订订阅时,购买令牌是否保持不变?

依赖购买令牌作为后端服务器上的用户ID是不是一个坏主意?(假设订阅过期时丢弃他们的数据并不是什么大问题)

android in-app-purchase in-app-billing

11
推荐指数
1
解决办法
601
查看次数

Android ANR在libc.so中

我收到一份ANR报告,该报告可由用户在我没有的设备上重现.但是,我在自己的代码中看不到线程问题,只有以下内容.

DALVIK THREADS (27):
"main" prio=5 tid=1 Native
| group="main" sCount=1 dsCount=0 obj=0x7682cf40 self=0xb4827800 
| sysTid=29689 nice=0 cgrp=apps/bg_non_interactive sched=0/0 handle=0xb6ff4bec
| state=S schedstat=( 194686184 170352917 762 ) utm=10 stm=9 core=3 HZ=100
| stack=0xbe5fd000-0xbe5ff000 stackSize=8MB
| held mutexes=
kernel: (couldn't read /proc/self/task/29689/stack)
native: #00 pc 0003732c  /system/lib/libc.so (__epoll_pwait+20)
native: #01 pc 000121bf  /system/lib/libc.so (epoll_pwait+26)
native: #02 pc 000121cd  /system/lib/libc.so (epoll_wait+6)
native: #03 pc 00010f23  /system/lib/libutils.so (_ZN7android6Looper9pollInnerEi+98)
native: #04 pc 0001114d  /system/lib/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+92)
native: #05 pc 00084d91  /system/lib/libandroid_runtime.so (_ZN7android18NativeMessageQueue8pollOnceEP7_JNIEnvi+22)
native: #06 pc …
Run Code Online (Sandbox Code Playgroud)

android

10
推荐指数
1
解决办法
1273
查看次数

如何在Android 4.4 KitKat带有元数据的SD卡上向MediaStore添加媒体

背景:在Android 4.4中,Google决定应用程序不应具有对SD卡的写入权限.

但是,应用程序可以写入/ SDCard/Android/data/App Package Name.

所以这就是我所做的.我已经写了一个MP3文件到/ Android/data /.然后我希望这个MP3文件出现在Android音乐播放器中.

我试过以下......

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
            + filePath))); 

和....

    MediaScannerConnection.scanFile(this,
          new String[] { file.toString() }, new String[] {"audio/*"},
          new MediaScannerConnection.OnScanCompletedListener() {
      public void onScanCompleted(String path, Uri uri) {
          Log.i("ExternalStorage", "Scanned " + path + ":");
          Log.i("ExternalStorage", "-> uri=" + uri);
      }
 });

和...

ContentResolver.requestSync(CreateSyncAccount(context), MediaStore.AUTHORITY, null);

这两个文件都会将文件作为文件添加到MediaStore,文件内容为:media/external/file/xxxxx

但是,该文件不会添加为音频.我可以更新MediaStore以将文件声明为音频,但不导入文件元数据.

除了编写我自己的标签阅读器之外,如何让媒体扫描仪扫描文件并像在内存和预KitKat SD卡上一样插入元数据?

android audio-player android-music-player android-sdcard android-mediascanner android-4.4-kitkat

6
推荐指数
1
解决办法
3462
查看次数

我可以控制Android手机的CPU限制吗?

我正在制作一个播放音频和大量DSP的Android应用程序.使用BetterBatteryStats,我在HTC One X上发现,当屏幕关闭时,CPU将节流回到384 MHz.对于我正在尝试的DSP处理,这个速度太慢了.

有没有办法让HTC One X在不保持屏幕的情况下移动到这么慢的速度?部分唤醒锁似乎没有削减它.

android cpu-usage

5
推荐指数
0
解决办法
529
查看次数

如何在具有不同颜色的 Android XML 中重用矢量

假设我有一个复杂的矢量图像。路径数据有一个填充颜色。我正在使用需要可绘制资源 ID 的 API。我想给这个 API 三个不同的矢量图像,唯一的区别是颜色。

我找不到一种方法来从 XML 着色矢量图像,只能以编程方式。我认为以下可能有效,但事实并非如此。

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/ic_awesome_bar_play"
        android:tint="#a8a8a8" />
Run Code Online (Sandbox Code Playgroud)

我也考虑过使用图层列表,但这不支持着色。任何人都知道如何不制作此矢量图像的三个副本?

xml android colors drawable android-vectordrawable

5
推荐指数
0
解决办法
280
查看次数

在 BillingClient.launchBillingFlow 期间 Android Play 商店崩溃

尝试为应用内项目启动计费时,我收到以下错误。

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Intent.getStringExtra(java.lang.String)”

代码很简单。用户选择一个项目。然后我将该项目传递给 querySkuDetailsAsync。我得到并看到结果。由于 API 原因,我然后调用...

SkuDetails skuDetails = new SkuDetails(skuDetails.getOriginalJSON());
BillingFlowParams flowParams = BillingFlowParams.newBuilder().setSkuDetails(skuDetails).build();
BillingResult billingResult = client.launchBillingFlow(activity, flowParams);
Run Code Online (Sandbox Code Playgroud)

然后,大多数时候,我得到了 NPE。一切正常。我不知道是什么变化导致了这个问题。

请注意,我确实尝试过直接传递 skuDetails,以防 JSON 是问题所在。它没有用。

计费库不是开源的,所以我不知道如何解决这个问题。

android in-app-billing

3
推荐指数
1
解决办法
231
查看次数