顯示具有 通知 標籤的文章。 顯示所有文章
顯示具有 通知 標籤的文章。 顯示所有文章

2015年12月16日 星期三

Android 5.0 Lollipop Notification Lock Screen Visibility 鎖頻 通知

Android 5.0 Lollipop 通知訊息在鎖頻時,可以設定公開或是私密訊息

1.先設定手機
設定 ->安全性 -> 螢幕鎖定方式 ->選擇圖形、PIN碼或密碼 ->設定密碼完成 ->選擇隱藏敏感通知內容 ->完成

2./res/layout/activity_main.xml


    

3.MainActivity.java
package com.terryyamg.lollipopnotificationtest;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btNotification = (Button) findViewById(R.id.btNotification);

        btNotification.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, Detail.class); //點選後動作
                PendingIntent pIntent = PendingIntent.getActivity(MainActivity.this, (int) System.currentTimeMillis(), intent, 0);
                // addAction(int icon, CharSequence title, PendingIntent intent) Deprecated 的解決方法
                NotificationCompat.Action detailAction =
                        new NotificationCompat.Action.Builder(R.mipmap.ic_launcher, "Detail", pIntent).build();

                NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this);
                builder.setSmallIcon(R.mipmap.ic_launcher);
                builder.setContentTitle("標題");
                builder.setContentText("內容");
                builder.setOngoing(false); //固定
//              builder.setFullScreenIntent(pIntent,true);//一直顯示在最上層 優先於setPriority
                builder.setPriority(Notification.PRIORITY_DEFAULT); //通知的位置 - Android 5.0 PRIORITY_MIN在底線以下
                builder.setVisibility(NotificationCompat.VISIBILITY_PRIVATE); //顯示訊息-VISIBILITY_PUBLIC 公開,VISIBILITY_PRIVATE私密
                builder.addAction(detailAction); //加入下方按鈕

                NotificationManager notificationManager =
                        (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                notificationManager.notify(0, builder.build());

            }
        });

    }
}
4./res/layout/detail.xml


    


5.Detail.java
package com.terryyamg.lollipopnotificationtest;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class Detail extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.detail);

        TextView tvDetail = (TextView)findViewById(R.id.tvDetail);
        tvDetail.setText("跳進來了");
    }
}

設定為 VISIBILITY_PUBLIC時
設定為 VISIBILITY_PRIVATE時

檔案下載:
https://github.com/terryyamg/LollipopNotificationTest
參考連結
http://www.intertech.com/Blog/android-development-tutorial-lollipop-notifications/
https://developer.getpebble.com/blog/2014/12/19/Leverage-Android-Actionable-Notifications/
http://stackoverflow.com/questions/13808939/jelly-bean-the-method-setpriorityint-is-undefined-for-the-type-notification

2015年11月23日 星期一

Android Badger Icon 提示 通知 數字

icon上的數字提示通知,Android沒有內建的,所以使用第三方套件ShortcutBadger

使用IDE: Android Studio
1.建立新方案後,在build.gradle(Module:app)檔案裡的dependencies位置裡面加上 compile 'me.leolin:ShortcutBadger:1.1.3@aar' 下載該套件
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'me.leolin:ShortcutBadger:1.1.3@aar'
}
2.AndroidManifest.xml


    

        
            
                

                
            
        

    


3.res/layout/activity_main.xml


    

    

    




4.MainActivity.java
package com.terryyamg.shortcutbadgertext;

import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import me.leolin.shortcutbadger.ShortcutBadger;

public class MainActivity extends Activity {

    private int badgeCount;
    private EditText numInput;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        numInput = (EditText) findViewById(R.id.numInput);

        Button button = (Button) findViewById(R.id.btnSetBadge);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                badgeCount = 0;
                try {
                    badgeCount = Integer.parseInt(numInput.getText().toString());
                } catch (NumberFormatException e) {
                    Toast.makeText(MainActivity.this, "錯誤:", Toast.LENGTH_SHORT).show();
                }

                ShortcutBadger.with(MainActivity.this).count(badgeCount); //次數

                Toast.makeText(MainActivity.this, "通知次數=" + badgeCount, Toast.LENGTH_SHORT).show();
            }
        });


        //find the home launcher Package
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_HOME);
        ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
        String currentHomePackage = resolveInfo.activityInfo.packageName;

        TextView textViewHomePackage = (TextView) findViewById(R.id.textViewHomePackage);
        textViewHomePackage.setText("手機型號:" + currentHomePackage);
    }

    @Override
    protected void onStart() {
        super.onStart();
        ShortcutBadger.with(this).remove(); //歸0
        Toast.makeText(this, "已讀", Toast.LENGTH_SHORT).show();
    }
}


檔案下載:
https://github.com/terryyamg/ShortcutBadgerText
參考連結:
https://github.com/leolin310148/ShortcutBadger