平台
RK3399 + Android 8.1
问题
在旧SDK使用的关机接口在8.1上测试不可用, 代码如下:
//shutdown now
String action = "android.intent.action.ACTION_REQUEST_SHUTDOWN";
Intent shutdown = new Intent(action);
shutdown.putExtra("android.intent.extra.KEY_CONFIRM", false);
shutdown.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
startActivity(shutdown);
finish();
}catch(Exception e){
e.printStackTrace();
}
执行时发现找不到 activity.
原因
|-- frameworks/base/core/java/android/content/Intent.java
旧SDK:
public static final String ACTION_REQUEST_SHUTDOWN = "android.intent.action.ACTION_REQUEST_SHUTDOWN";
新SDK:
public static final String ACTION_REQUEST_SHUTDOWN
= "com.android.internal.intent.action.REQUEST_SHUTDOWN";
Action值变了, 新代码如下
//shutdown now
String action = "com.android.internal.intent.action.REQUEST_SHUTDOWN";
if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.N){
action = "android.intent.action.ACTION_REQUEST_SHUTDOWN";
}
Intent shutdown = new Intent(action);
shutdown.putExtra("android.intent.extra.KEY_CONFIRM", false);
shutdown.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
startActivity(shutdown);
finish();
}catch(Exception e){
e.printStackTrace();
}