当 S Pen 在 android note 中分离时,将您的应用程序置于最前面?

Cha*_*ndu 4 android galaxy

我想在 S Pen 分离时立即打开我的应用程序,如果仅在我的应用程序再次打开时调用放在 onSPenDetached 下的方法,你怎么能做到这一点?

谢谢,昌都

小智 5

以下适用于我的 Galaxy Tab A 9.7 和运行 Android 5.0.2 的 S-Pen (SM-P550)。

安装和拆卸的手写笔创建类型的广播意图com.samsung.pen.INSERT与命名booleanExtrapenInsertfalse,如果分离,并true如果放回设备。

因此可以创建一个广播接收器来过滤这种事件。以下代码适用于这样的广播接收器,如果触控笔分离,它会启动 OneNote:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class SPenDetachIntentBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent penInsertIntent) {
        if (!penInsertIntent.getBooleanExtra("penInsert", true)) {
            try {
                Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage("com.microsoft.office.onenote");
                context.startActivity(launchIntent);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在清单文件中,您需要将其声明为com.samsung.pen.INSERT使用意图过滤器侦听广播意图的接收器。项目AndroidManifest.xml声明中的以下条目SPenDetachBroadcastReceiver生成一个实例并使其侦听com.samsung.pen.Insert广播意图:

<receiver
            android:name=".SPenDetachIntentBroadcastReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.samsung.pen.INSERT" />
            </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

registerSPenDetachmentListenerSPenEventLibrary对象上使用实现ServiceonSPenDetached方法注册相比的优势在于,您不需要任何额外的库文件,也不需要额外的权限。