0

私のアンドロイドアプリでは、AppTileを追加しました。ほとんどの場合、このAppTile はクリック可能ではありません。そのアイコンは、この行がAndroid AppTileService onClickが呼び出されない

Logger.d(getClass(), "onClick()"); 

に達することはありません。しかし、私は方法onStartListening()またはonStopListening(ことをテストしている私のログに(https://developer.android.com/reference/android/service/quicksettings/Tile.html#STATE_UNAVAILABLE

な無効または利用できないアイコンとして、グレーアウトされ)は、AppTileが表示または非表示になるたびに呼び出されます。

AppTileService.java

package my.package 

import android.os.Build; 
import android.service.quicksettings.TileService; 
import android.support.annotation.RequiresApi; 

import my.package.utils.Logger; 

@RequiresApi(api = Build.VERSION_CODES.N) 
public class AppTileService extends TileService { 

    @Override 
    public void onClick() { 
     Logger.d(getClass(), "onClick()"); 
     if (isSecure()) { 
      Logger.d(getClass(), "isSecure = true"); 
      NotificationHandler.showDirectReplyNotification(this); 
     } 
    } 
} 

のAndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.package"> 
    <application 
     android:allowBackup="false" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"> 

     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:windowSoftInputMode="stateHidden"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 

     <service 
      android:name=".AppTileService" 
      android:icon="@drawable/tile_icon" 
      android:label="@string/app_name" 
      android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> 
      <intent-filter> 
       <action android:name="android.service.quicksettings.action.QS_TILE"/> 
      </intent-filter> 
     </service> 

    </application> 
</manifest> 

誰かが私を実装するために何かを忘れてしまった、これは何ができるか、またはかどうかを教えてもらえますか?

答えて

1

2つの方法のいずれかでタイルがアクティブであることを示す必要があります。

まず、<service><meta-data android:name="android.service.quicksettings.ACTIVE_TILE" android:value="true" />です。

第二には、onStartListening()に、あなたは私がthis bookからthis sample appupdateTile()の方法により行うよう、アクティブになるようにタイルの状態を更新することができます。

private void updateTile() { 
    Tile tile=getQsTile(); 

    if (tile!=null) { 
     boolean isEnabled= 
     getPrefs() 
      .getBoolean(SettingsFragment.PREF_ENABLED, false); 
     int state=isEnabled ? 
     Tile.STATE_ACTIVE : 
     Tile.STATE_INACTIVE; 

     tile.setIcon(Icon.createWithResource(this, 
     R.drawable.ic_new_releases_24dp)); 
     tile.setLabel(getString(R.string.app_name_short)); 
     tile.setState(state); 
     tile.updateTile(); 
    } 
    } 
+0

おかげで、私はあなたの提案を追加し、削除する必要がありますタイルを1回タップしてクイック設定に再度追加します。今は魅力のように働く – Larcado

関連する問題