我一直在研究Android SDK平台,有点不清楚如何保存应用程序的状态.因此,考虑到'Hello,Android'示例的这种小型重新设计:
package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
private TextView mTextView = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTextView = new TextView(this);
if (savedInstanceState == null) {
mTextView.setText("Welcome to HelloAndroid!");
} else {
mTextView.setText("Welcome back.");
}
setContentView(mTextView);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这对于最简单的情况就足够了,但无论我如何远离应用程序,它总是以第一条消息响应.
我确信解决方案就像覆盖onPause或类似的那样简单,但我已经在文档中捅了大约30分钟左右,并且没有找到任何明显的东西.
我在 Android studio 4.1 beta 1 上。我在我的设备上安装了我的应用程序并打开了数据库检查器,但没有显示任何内容。我应该做点别的吗?
我正在使用房间数据库。我可以看到设备上的数据库。为什么数据库没有显示在数据库检查器中?
我正在尝试新的 jetpack DataStore库。我使用库保存了数据。这在应用程序数据目录 (/data/data/my.package.name/files/datastore/settings.preferences_pb) 中创建了一个文件settings.preferences_pb 。setting是我给的文件名。使用文本查看器无法正确显示数据。我可以辨认出键名,但值是垃圾。如何打开该文件并查看它?
我正在开发一个应用程序,该应用程序将检测蓝牙信号(Sensoro 智能信标设备)并打开活动。但我希望应用程序仍然能够检测到信号,即使应用程序处于后台甚至被杀死。我使用了前台服务,当我打开应用程序并在活动之间移动时,它会检测到信号,但是当将应用程序发送到后台并打开其他应用程序时,侦听器会停止,尽管服务仍在工作。我正在打印日志。System.out.println("Sensoro 2" );即使我终止应用程序或打开另一个应用程序,也会继续打印。但是 BeaconManagerListener 中的打印日志不起作用。我尝试使用后台服务,但它也不起作用。您能否告知,当应用程序在后台或被杀死时,是否有一种方法可以使侦听器在服务中工作?这是服务代码:
public class MyService extends Service {
public static final String CHANNEL_ID = "ForegroundServiceChannel";
int service_timer=0;
Timer timer = new Timer();
SensoroManager sensoroManager;
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
sensoroManager = SensoroManager.getInstance(MyService.this);
String input = intent.getStringExtra("inputExtra");
System.out.println("Sensoro 2" );
createNotificationChannel();
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,
0, notificationIntent, 0);
Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("Foreground Service")
.setContentText(input) …Run Code Online (Sandbox Code Playgroud) 它说,我正在阅读这篇文章update your project's compileSdkVersion and targetSdkVersion to API 28.所以我做了但支持库给出了错误,如支持库不应该使用不同于compileSdk版本的版本
我尝试将它更新到28.0.0,但它没有用,并说
Failed to resolve: com.android.support:appcompat-v7:28.0.0
我知道它仍然可以使用27.1.1但是正确的版本是什么,不会给出红色下划线?
编辑
build.gradle文件
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 28
defaultConfig {
applicationId "in.eightfolds.safety"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
}
ext.support_version = '28.0.0'
ext.room_version = "1.1.1"
ext.lifecycle_version = "1.1.1" …Run Code Online (Sandbox Code Playgroud) 使用导航组件时如何检查返回堆栈中是否存在片段?
我能想到的一件事是尝试 NavBackStackEntry使用
val backStackEntry=findNavController().getBackStackEntry(R.id.courseTrackFeedbackFragment)
Run Code Online (Sandbox Code Playgroud)
在文档中,它说如果目标不在返回堆栈上,这将抛出 IllegalArgumentException 。但这看起来像是一个黑客行为,有更好的方法吗?
大家好我的应用程序一切正常,直到昨天,我昨天更新了我的SDK,它开始给出错误,它首先给出了一个错误
没有找到值v24的资源....
像这样的一些东西我搜索并通过更改build.gradle中的以下行来解决它
compileSdkVersion 25
buildToolsVersion '25.0.2'
Run Code Online (Sandbox Code Playgroud)
现在,错误消失了,它在更高的Android版本7.1.1中运行完全正常 但是当我在较低版本的android中运行它给出以下错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.wowio.ebookreader, PID: 15469
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.wowio.ebookreader/com.eminosoft.ebookread.activity.SplashScreenActivity}: java.lang.ClassNotFoundException: Didn't find class "com.eminosoft.ebookread.activity.SplashScreenActivity" on path: DexPathList[[zip file "/data/app/com.wowio.ebookreader-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.wowio.ebookreader-1, /vendor/lib, /system/lib]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2378)
at android.app.ActivityThread.access$800(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5433)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.eminosoft.ebookread.activity.SplashScreenActivity" on path: DexPathList[[zip file "/data/app/com.wowio.ebookreader-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.wowio.ebookreader-1, …Run Code Online (Sandbox Code Playgroud) 在哪里可以找到在android studio中自动在布局中添加结束标记的设置。假设如果我从建议中选择TextView,它应该使用以下命令自动将其关闭/>
以前,我曾经自动获取结束标签,但是在更新Android Studio之后,我没有得到它。我尝试在“编辑器>代码样式” >XML中搜索,但未找到任何相关设置
我在Android Studio 3.5 RC 3上
简而言之,我想{"Id":7,"Name":"MyName"}使用 Volley Post 请求将此数据发送到服务器。
它有 1 个整数和 1 个字符串,我得到的响应是 Jsonarray
我尝试了以下方法,但没有一个有效
因为它是 json 数组请求,所以我无法在参数中发送数据,因为第三个参数只接受 JsonArray 并且我必须发送 JsonObject 所以将其保留为 null
new JsonArrayRequest(Method,Url,JsonArray,ResponseListener,ErrorListner)
我无法将其放入,HashMap因为值的 1 是整数,并且它只接受字符串
getparams() 方法
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params=new HashMap<>();
params.put("Id",7); // <====== This is Invalid
params.put("Name","MyName");
return params;
}
Run Code Online (Sandbox Code Playgroud)
获取主体方法
@Override
public byte[] getBody() {
String body="{\"Id\":7,\"Name\":\"MyName\"}";
return body.getBytes();
}
Run Code Online (Sandbox Code Playgroud)
我可以使用 HttpUrlConnection 获取响应。
还有其他方法可以实现齐射吗?
如何在Android 9.0(PIE)中获取WIFI SSID?我的代码在android 8.1.0之前可以正常工作,但在android 9.0上却无法正常工作
ConnectivityManager connManager = (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (networkInfo.isConnected()) {
WifiManager wifiManager = (WifiManager) activity.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
wifiInfo.getSSID();
String name = networkInfo.getExtraInfo();
String ssid = "\"" + wifiInfo.getSSID() + "\"";
}
Run Code Online (Sandbox Code Playgroud)
但是此代码不适用于Android 9.0
android android-wifi networkinfo android-connectivitymanager android-9.0-pie
android ×10
android-architecture-navigation ×1
android-connectivitymanager ×1
android-wifi ×1
networkinfo ×1
post ×1
sdk ×1