小编zee*_*ali的帖子

振铃模式改变监听器广播接收器?

AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

switch (am.getRingerMode()) {
    case AudioManager.RINGER_MODE_SILENT:
        Log.i("MyApp","Silent mode");
    break;

    case AudioManager.RINGER_MODE_VIBRATE:
        Log.i("MyApp","Vibrate mode");
    break;

    case AudioManager.RINGER_MODE_NORMAL:
        Log.i("MyApp","Normal mode");
    break;
}
Run Code Online (Sandbox Code Playgroud)

从上面的代码我可以获得振铃模式.我要做的就是听铃声模式改变并调用一个函数.

我被告知的是我可以注册AudioManager.RINGER_MODE_CHANGED_ACTION并在broadcastreceiver onReceive方法中监听更改意图.听起来很清楚.但我是android的新手,真的不知道如何写它.有没有人可以写一段代码,并显示它是如何工作,而不是说使用这个或那:)谢谢

android broadcastreceiver android-audiomanager

13
推荐指数
2
解决办法
1万
查看次数

Boot BroadcastReceiver无法在小米设备上运行

我有一个跟随BroadcastReceiver,应该在启动完成后运行.我已经在我的小米设备(Redmi 1s)上进行了测试,它没有运行,而在像三星这样的其他设备上它按预期运行.

public class DeviceBootReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
            Toast.makeText(context, "I am Running", Toast.LENGTH_SHORT).show();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已在Manifest中设置了权限.

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
Run Code Online (Sandbox Code Playgroud)

以下是我的广播接收器:

<receiver android:name=".receiver.DeviceBootReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-permissions android-reboot android-broadcastreceiver

10
推荐指数
1
解决办法
3181
查看次数

java.lang.IllegalStateException:查看 ID 为 -1

我在Lenovo K50a40、OS 6.0 和其他一些设备的crashlytics中发现了以下崩溃日志。我无法从此日志中跟踪异常,也无法找到此异常来自我的应用程序的任何线索。我在社区中没有发现任何人之前遇到过类似的问题。如果您对此有所了解,请分享您的见解。

java.lang.IllegalStateException: View with id -1: android.support.design.widget.TabLayout$TabView#onMeasure() did not set the measured dimension by calling setMeasuredDimension()
    at android.view.View.measure(View.java:19199)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1723)
    at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1275)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:650)
    at android.support.design.widget.TabLayout$SlidingTabStrip.onMeasure(TabLayout.java:1859)
    at android.view.View.measure(View.java:19169)
    at android.widget.HorizontalScrollView.measureChildWithMargins(HorizontalScrollView.java:1259)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:223)
    at android.widget.HorizontalScrollView.onMeasure(HorizontalScrollView.java:315)
    at android.support.design.widget.TabLayout.onMeasure(TabLayout.java:1030)
    at android.view.View.measure(View.java:19169)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1723)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:788)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:648)
    at android.support.design.widget.AppBarLayout.onMeasure(AppBarLayout.java:234)
    at android.view.View.measure(View.java:19169)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
    at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:719)
    at android.support.design.widget.AppBarLayout$Behavior.onMeasureChild(AppBarLayout.java:1008)
    at android.support.design.widget.AppBarLayout$Behavior.onMeasureChild(AppBarLayout.java:787)
    at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:789)
    at android.view.View.measure(View.java:19169)
    at android.widget.RelativeLayout.measureChild(RelativeLayout.java:786)
    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:560)
    at android.view.View.measure(View.java:19169)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6124)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:223)
    at …
Run Code Online (Sandbox Code Playgroud)

android illegalstateexception android-view android-tablayout

5
推荐指数
1
解决办法
2111
查看次数

有什么方法可以防止或处理 Android 应用程序中的本机崩溃吗?

在我的 Flutter 应用程序中,我在 Google Play Console 上收到了以下崩溃日志,这是一次本机崩溃。我无法完全理解它。这个 Flutter 应用程序也有 android java 代码。在崩溃日志中,它指向我的 android java 代码 com.xxxx.xxx,我已经在其中处理了异常和错误。


pid: 0, tid: 0 >>> com.xxxx.xxxx <<<

backtrace:
#00 pc 000000000005f356 /apex/com.android.runtime/lib/bionic/libc.so (abort+166)
#00 pc 0000000000021d38 /system/lib/libinput.so (abort_with_message(char const*)+24)
#00 pc 0000000000021d7c /system/lib/libinput.so (ubsan_handle_sub_overflow_minimal_abort+24)
#00 pc 0000000000012cb9 /system/lib/libinput.so (android::MotionEvent::getAxisValue(int, unsigned int) const+236)
#00 pc 0000000002202d19 /system/framework/arm/boot-framework.oat (art_jni_trampoline+128)
#00 pc 000000000204b00d /memfd:/jit-cache (com.xxxx.d.a.a.a+1484)
#00 pc 00000000000d7bc5 /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub_internal+68)
#00 pc 000000000042e457 /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub+250)
#00 pc 00000000000dffb7 /apex/com.android.runtime/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+174) …
Run Code Online (Sandbox Code Playgroud)

android abort android-ndk flutter google-play-console

5
推荐指数
0
解决办法
687
查看次数

如何在Android中以编程方式与USSD对话框进行交互

我想用USSD对话,其自带拨号后任何USSD代码发言权* 123#这要求用户输入选项编号取决于SIM卡供应商,以执行特定的任务(一个或多个)。我需要与该对话框进行交互,以便以编程方式在该对话框中提供输入。

但是,在拨打任何USSD代码后,我可以使用读取警报对话框中出现的USSD响应AccessibilityService并使用来显示响应,Toast如下面的代码所示。我还没有找到任何与USSD对话框进行交互的解决方案。

public class UssdService extends AccessibilityService{
    public static String TAG = "USSD";

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        Log.d(TAG, "onAccessibilityEvent");
        String text = event.getText().toString();
        if (event.getClassName().equals("android.app.AlertDialog")) {
            Log.d(TAG, text);
            Toast.makeText(this, text, Toast.LENGTH_LONG).show();
        }
    }

    @Override
    public void onInterrupt() {
    }

    @Override
    protected void onServiceConnected() {
        super.onServiceConnected();
        Log.d(TAG, "onServiceConnected");
        AccessibilityServiceInfo info = new AccessibilityServiceInfo();
        info.flags = AccessibilityServiceInfo.DEFAULT;
        info.packageNames = new String[]{"com.android.phone"};
        info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
        info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC; …
Run Code Online (Sandbox Code Playgroud)

android ussd sim-card android-alertdialog accessibilityservice

4
推荐指数
1
解决办法
2143
查看次数

在android中的服务中每天在特定时间安排一次TimerTask

我有一个TimerTask对象timerTask。我的代码正在运行,但是当服务最初启动时,我的计时器任务会在指定时间(即下午 3:30)之前立即运行,但我希望它每天只在下午 3:30 运行一次。

Calendar cal = Calendar.getInstance();
cal.set(Calendar.AM_PM, Calendar.PM);
cal.set(Calendar.HOUR, 3);    
cal.set(Calendar.MINUTE, 30);
cal.set(Calendar.SECOND, 0);
Date date = cal.getTime();
timer.schedule(timerTask, date, 1000*60*60*24); // once per day
Run Code Online (Sandbox Code Playgroud)

service android timer android-service timertask

2
推荐指数
1
解决办法
5270
查看次数