从Android 8.0 Oreo
java.lang.IllegalStateException中的通讯录中检索联系人时,我遇到了问题:仅全屏不透明活动可以请求定向
我正在尝试从电话通讯录中获取活动中的联系信息,它非常适合棒棒糖,棉花糖,牛轧糖等,但对于奥利奥这样的错误会给我带来这种错误,请帮助我。我的代码在这里。
演示代码:-
private void loadContacts() {
contactAsync = new ContactLoaderAsync();
contactAsync.execute();
}
private class ContactLoaderAsync extends AsyncTask<Void, Void, Void> {
private Cursor numCursor;
@Override
protected void onPreExecute() {
super.onPreExecute();
Uri numContacts = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String[] numProjection = new String[]{ContactsContract.CommonDataKinds.Phone.CONTACT_ID, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.TYPE};
if (android.os.Build.VERSION.SDK_INT < 11) {
numCursor = InviteByContactActivity.this.managedQuery(numContacts, numProjection, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " COLLATE NOCASE ASC");
} else {
CursorLoader cursorLoader = new CursorLoader(InviteByContactActivity.this, numContacts, numProjection, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " COLLATE NOCASE ASC");
numCursor = cursorLoader.loadInBackground();
}
}
@Override
protected Void doInBackground(Void... params) {
if (numCursor.moveToFirst()) {
try {
final int contactIdIndex = numCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID);
final int displayNameIndex = numCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
final int numberIndex = numCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
final int typeIndex = numCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE);
String displayName, number, type;
do {
displayName = numCursor.getString(displayNameIndex);
number = numCursor.getString(numberIndex);
type = getContactTypeString(numCursor.getString(typeIndex), true);
final ContactModel contact = new ContactModel(displayName, type, number);
phoneNumber = number.replaceAll(" ", "").replaceAll("\\(", "").replaceAll("\\)", "").replaceAll("-", "");
if (phoneNumber != null || displayName != null) {
contacts.add(phoneNumber);
contactsName.add(displayName);
contactsChecked.add(false);
filterdNames.add(phoneNumber);
filterdContactNames.add(displayName);
filterdCheckedNames.add(false);
}
} while (numCursor.moveToNext());
} finally {
numCursor.close();
}
}
Collections.sort(contacts, new Comparator<String>() {
@Override
public int compare(String lhs, String rhs) {
return lhs.compareToIgnoreCase(rhs);
}
});
InviteByContactActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mContactAdapter.notifyDataSetChanged();
}
});
return null;
}
}
private String getContactTypeString(String typeNum, boolean isPhone) {
String type = PHONE_TYPES.get(typeNum);
if (type == null)
return "other";
return type;
}
static HashMap<String, String> PHONE_TYPES = new HashMap<String, String>();
static {
PHONE_TYPES.put(ContactsContract.CommonDataKinds.Phone.TYPE_HOME + "", "home");
PHONE_TYPES.put(ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE + "", "mobile");
PHONE_TYPES.put(ContactsContract.CommonDataKinds.Phone.TYPE_WORK + "", "work");
}
}
错误日志:
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example, PID: 6573
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.Activity.InviteByContactActivity}: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
当目标sdk为28时,问题似乎正在发生。因此,在尝试了许多选项之后,此方法终于奏效了。
<activity
android:name=".activities.FilterActivity"
android:theme="@style/Transparent"
android:windowSoftInputMode="stateHidden|adjustResize" />
样式:-
<style name="Transparent" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
注意:api 28需要parent =“ Theme.AppCompat.Light.NoActionBar”。以前在api
26上有其他功能。虽然功能不错,但在28时开始出现问题。希望它对这里有所帮助。编辑:对于某些仅通过设置工作<item name="android:windowIsTranslucent">false</item> and <item name="android:windowIsFloating">false</item>
即可。可能取决于实现解决方案的工作方式。就我而言,通过将它们设置为true可以工作。
我在Android 8.0 Oreo Java . lang . illegalstateexception中从通讯录中检索联系人时遇到了这个问题:只有全屏不透明的活动才能请求定向 我正在尝试从电话通讯录中获取我活动中的联系人,它非常适合Lollipop、Marshmallow、牛轧糖等,但它会给我奥利奥这样的错误,请帮帮我。我的代码在下面。 演示代码:- 错误日志:-
在我的应用程序中,我将“compileSdkVersion”从25更改为27。我在android 8.0中发现了以下问题: 我找到了一个解决方案,可以将以下方法添加到活动中: 但是我在上面的错误日志中找不到相应的活动。有人遇到过这个问题吗?请帮帮我。
脸书 SDK 版本 4.27.0 Android操作系统版本8.0 应用程序崩溃,但有例外,这是我在Crashlytics上找到的跟踪日志: 任何人都可以帮我这个吗? PS:在Android Source中,在查看了这条线号987之后,似乎这条线就是罪魁祸首。 https://Android . Google source . com/platform/frameworks/base . git/
我有一个活动,当设备处于横向时从浏览器打开,让我低于错误 只有全屏不透明的活动才能请求方向 显示 style.xml
问题内容: 我正在尝试使用JavaScript FullScreen API,并从此处使用针对当前非标准实现的解决方法: 可悲的是,它的行为非常不稳定。我只关心Chrome(使用v17),但是由于遇到问题,我在Firefox 10中做了一些测试以进行比较,结果相似。 下面的代码尝试将浏览器设置为全屏,有时可以,有时不能。它总是调用警报以表明它正在请求全屏显示。这是我发现的: 通常设置为全屏。它可以
如何用背景图像显示完整的启动屏幕 下面的splash活动有完整的图像,将来可能会更改,现在我使用iugaad来显示状态栏背景,但每当我更改图像状态栏背景时,都应该显示该图像。 启动画面