微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback的实例源码

项目:satstat    文件PermissionHelper.java   
/**
 * Requests permissions to be granted to this application.
 * 
 * This method is a wrapper around
 * {@link android.support.v4.app.ActivityCompat#requestPermissions(android.app.Activity,String[],int)}
 * which works in a similar way,except it can be called from non-activity contexts. When called,it
 * displays a notification with a customizable title and text. When the user taps the notification,an
 * activity is launched in which the user is prompted to allow or deny the request.
 * 
 * After the user has made a choice,* {@link android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,int[])}
 * is called,reporting whether the permissions were granted or not.
 * 
 * @param context The context from which the request was made. The context supplied must implement
 * {@link android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback} and will receive the
 * result of the operation.
 * @param permissions The requested permissions
 * @param requestCode Application specific request code to match with a result reported to
 * {@link android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,int[])}
 * @param notificationTitle The title for the notification
 * @param notificationText The text for the notification
 * @param notificationIcon Resource identifier for the notification icon
 */
public static <T extends Context & OnRequestPermissionsResultCallback> void requestPermissions(final T context,String[] permissions,int requestCode,String notificationTitle,String notificationText,int notificationIcon) {
    ResultReceiver resultReceiver = new ResultReceiver(new Handler(Looper.getMainLooper())) {
        @Override
        protected void onReceiveResult (int resultCode,Bundle resultData) {
            String[] outPermissions = resultData.getStringArray(Const.KEY_PERMISSIONS);
            int[] grantResults = resultData.getIntArray(Const.KEY_GRANT_RESULTS);
            context.onRequestPermissionsResult(resultCode,outPermissions,grantResults);
        }
    };

    Intent permIntent = new Intent(context,PermissionRequestActivity.class);
    permIntent.putExtra(Const.KEY_RESULT_RECEIVER,resultReceiver);
    permIntent.putExtra(Const.KEY_PERMISSIONS,permissions);
    permIntent.putExtra(Const.KEY_REQUEST_CODE,requestCode);

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
    stackBuilder.addNextIntent(permIntent);

    PendingIntent permPendingIntent =
            stackBuilder.getPendingIntent(
                    0,PendingIntent.FLAG_UPDATE_CURRENT
                    );

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
    .setSmallIcon(notificationIcon)
    .setContentTitle(notificationTitle)
    .setContentText(notificationText)
    .setongoing(true)
    //.setCategory(Notification.CATEGORY_STATUS)
    .setAutoCancel(true)
    .setWhen(0)
    .setContentIntent(permPendingIntent)
    .setStyle(null);

    notificationmanager notificationmanager = (notificationmanager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationmanager.notify(requestCode,builder.build());
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。