前言
写在前面:首先是不一次性放出来的原因:资料来之不易,希望大家好好珍惜,每天花一段时间细细的消化这些题目,其次希望大家在阅读题目的时候最好跟着书或者代码一起阅读、一起敲,做到熟稔于心,信手拈来,这样面试的时候才能展现你最自信的一面。
61、如何为不同的gradle buildTypes提供不同的Android应用程序图标?
答案:
弄清楚了。您需要做的是创建一个单独的src文件夹debug,其中包含不同的图标。例如,如果您的项目布局如下,并且启动器图标称为ic_launcher.png:
[Project Root]
-[Module]
-src
-main
-res
-drawable-*
-ic_launcher.png
然后,要为调试构建类型添加单独的图标,请添加:
[Project Root]
-[Module]
-src
-main
-res
-drawable-*
-ic_launcher.png
-debug
-res
-drawable-*
-ic_launcher.png
然后,当您在调试构建类型下进行构建时,它将使用在调试文件夹中找到的ic_launcher。
62、在Android中从C ++调用Java方法
答案:
如果是对象方法,则需要将该对象传递给CallObjectMethod
:
jobject result = env->CallObjectMethod(obj, messageMe, jstr);
你正在做什么相当于jstr.messageMe()
。
由于你的方法无效,因此应调用:
env->CallVoidMethod(obj, messageMe, jstr);
如果要返回结果,则需要更改JNI签名(()V
意味着void
返回类型的方法)以及Java代码中的返回类型。
63、如何实现android 警报管理器?
答案:
从服务设置警报:
package yourPackage;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
public class YourService extends Service
{
Alarm alarm = new Alarm();
public void onCreate()
{
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
alarm.setAlarm(this);
return START_STICKY;
}
@Override
public void onStart(Intent intent, int startId)
{
alarm.setAlarm(this);
}
@Override
public IBinder onBind(Intent intent)
{
return null;
}
}
如果要设置在电话启动时重复发出警报:
向Manifest.xml
添加权限和服务:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
...
<receiver android:name=".AutoStart">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
...
<service
android:name=".YourService"
android:enabled="true"
android:process=":your_service" >
</service>
并创建一个新类:
package yourPackage;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class AutoStart extends BroadcastReceiver
{
Alarm alarm = new Alarm();
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
{
alarm.setAlarm(context);
}
}
}
64、Android:如何在AlertDialog中重写onBackPressed()?
答案:
最后,我在对话框中添加了一个键侦听器,以侦听Back键。onBackPressed()虽然没有覆盖的优雅,但是它可以工作。这是代码:
dlgDetails = new AlertDialog.Builder(this)
.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey (DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK &&
event.getAction() == KeyEvent.ACTION_UP &&
!event.isCanceled()) {
dialog.cancel();
showDialog(DIALOG_MENU);
return true;
}
return false;
}
})
//(Rest of the .stuff ...)
65、Android-启动时启动服务
答案:
好吧,这是一个自动启动应用程序的完整示例
AndroidManifest文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"