现在这很奇怪......
运用
AccountManager.newChooseAccountIntent(null, null, new String[] {"com.google"}, null, null, null, null);
Run Code Online (Sandbox Code Playgroud)
确实给了我一个账户清单.但是使用
AccountManager.get(context).getAccountsByType("com.google")
Run Code Online (Sandbox Code Playgroud)
返回0个帐户.这个问题只发生在棉花糖中.
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
Run Code Online (Sandbox Code Playgroud)
仍然存在于清单中.
有任何想法吗...?
更新:原来,必须要求GET_ACCOUNTS的许可,即使文档说不然......(见评论)
问题:
我正在使用android移动服务,它依赖于androidhttpclient.
引用org.apache.http.legacy解决了所有问题,应用运行得很好.然而,随着proguard的开启,我不断遇到问题.
问题出现在两种情况中.如果我保持选中导出复选框(在jave构建路径中),我会得到一个'Stub!' 预期的异常(请参阅下面的讨论)(请参阅我正在讨论的复选框的屏幕截图)
类型为"Stub!"的运行时崩溃:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.stuffd/com.stuffd.MainActivity}: java.lang.RuntimeException: Stub!
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2345)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2405)
at android.app.ActivityThread.access$800(ActivityThread.java:149)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1324)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:211)
at android.app.ActivityThread.main(ActivityThread.java:5317)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
Caused by: java.lang.RuntimeException: Stub!
at org.apache.http.message.AbstractHttpMessage.(AbstractHttpMessage.java:7)
at org.apache.http.client.methods.HttpRequestBase.(HttpRequestBase.java:7)
at org.apache.http.client.methods.HttpGet.(HttpGet.java:8)
at com.microsoft.windowsazure.mobileservices.table.MobileServiceJsonTable.executeGetRecords(MobileServiceJsonTable.java:952)
at com.microsoft.windowsazure.mobileservices.table.MobileServiceJsonTable.executeUrlQuery(MobileServiceJsonTable.java:183)
at com.microsoft.windowsazure.mobileservices.table.MobileServiceJsonTable.execute(MobileServiceJsonTable.java:160)
at com.microsoft.windowsazure.mobileservices.table.MobileServiceTable.execute(MobileServiceTable.java:158)
at com.microsoft.windowsazure.mobileservices.table.MobileServiceTable.execute(MobileServiceTable.java:249)
at com.microsoft.windowsazure.mobileservices.table.query.ExecutableQuery.execute(ExecutableQuery.java:101)
Run Code Online (Sandbox Code Playgroud)
但是,如果我保持复选框未选中(如建议 - 请参阅下面的讨论),我得到和AbstractMethodError异常.
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) …Run Code Online (Sandbox Code Playgroud) 使用官方AVD rev.3
打电话给:
ActivityCompat.requestPermissions(activity, new String[]{"android.permission.USE_CREDENTIALS"}, REQUEST_PERMISSION_CREDENTIALS);
Run Code Online (Sandbox Code Playgroud)
立即开火:
onRequestPermissionsResult (int requestCode, String[] permissions, int[] grantResults)
Run Code Online (Sandbox Code Playgroud)
结果代码是 PackageManager.PERMISSION_DENIED
任何人都有修复?
更新:已知受影响:
Manifest.permission.CHANGE_NETWORK_STATE
Manifest.permission.WRITE_SETTINGS (solved, see Sam's answer)
android.permission.USE_CREDENTIALS (solved, read Update 2)
READ_SMS
Run Code Online (Sandbox Code Playgroud)
更新2:看到优秀的接受答案.从本质上讲,USE_CREDENTIALS现在是一个安全的许可.打败我为什么sdk不仅仅为它返回PERMISSION_GRANTED ......
我想在我的应用程序中重命名100多个字符串(例如,将com.myapp附加到所有这些字符串的前面),但右键单击时重构菜单显示为灰色.实现这一目标的任何其他方式?顺便说一下,新的Android工作室有这个功能吗?
我已经知道粘贴到Excel技巧以按字母顺序排列所有内容.
因此,我使用以下代码将图像保存到设备:
Intent intentSaveToDevice = new Intent(Intent.ACTION_CREATE_DOCUMENT)
.addCategory(Intent.CATEGORY_OPENABLE)
.setType("image/*")
.putExtra(Intent.EXTRA_TITLE, model.StuffName);
startActivityForResult(intentSaveToDevice, StuffdApp.REQUEST_CODE_SAVE_SAF);
Run Code Online (Sandbox Code Playgroud)
而且效果很好,但是图像保存时不带*.jpg或*.png扩展名。
所以我尝试了这个:
.putExtra(Intent.EXTRA_TITLE, model.StuffName+".jpg");
Run Code Online (Sandbox Code Playgroud)
这似乎很好。除了有重复的文件时,我得到以下信息:
mysavedimage.jpg(1) 代替 mysavedimage(1).jpg
(1)由SAF自动附加,但位置错误。在android 4.4和5上试用过。
也尝试更改.setType("image/*")为不同的jpg变体,但这没有帮助。
在SAF中处理文件扩展名的正确方法是什么?具体来说,保存重复文件时如何获得正确的扩展名?